## Loading required package: ggplot2
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
## randomForest 4.6-14
## Type rfNews() to see new features/changes/bug fixes.
##
## Attaching package: 'randomForest'
## The following object is masked from 'package:ggplot2':
##
## margin
## Type 'citation("pROC")' for a citation.
##
## Attaching package: 'pROC'
## The following objects are masked from 'package:stats':
##
## cov, smooth, var
Le jeu de données qui sera étudié dans ce projet décrit le relevé de satisfaction de passagers en avion. Il contient les notes attribuées (entre 0 et 5) pour différents services ainsi que les catégories et profil des voyageur. Tout ceci dans le but de prédir leur satisfaction.
On voit que les deux premières colonnes (X & id) sont inutiles pour nos analyses, on va donc les supprimer.
DF.train <- read.csv("data/train.csv")
DF.test <- read.csv("data/test.csv")
# On supprime les lignes ou il y a des valeurs manquantes.
DF.train <- DF.train[!rowMeans(is.na(DF.train)*1) > 0,]
DF.test <- DF.test[!rowMeans(is.na(DF.test)*1) > 0,]
str(DF.train)
## 'data.frame': 103594 obs. of 25 variables:
## $ X : int 0 1 2 3 4 5 6 7 8 9 ...
## $ id : int 70172 5047 110028 24026 119299 111157 82113 96462 79485 65725 ...
## $ Gender : chr "Male" "Male" "Female" "Female" ...
## $ Customer.Type : chr "Loyal Customer" "disloyal Customer" "Loyal Customer" "Loyal Customer" ...
## $ Age : int 13 25 26 25 61 26 47 52 41 20 ...
## $ Type.of.Travel : chr "Personal Travel" "Business travel" "Business travel" "Business travel" ...
## $ Class : chr "Eco Plus" "Business" "Business" "Business" ...
## $ Flight.Distance : int 460 235 1142 562 214 1180 1276 2035 853 1061 ...
## $ Inflight.wifi.service : int 3 3 2 2 3 3 2 4 1 3 ...
## $ Departure.Arrival.time.convenient: int 4 2 2 5 3 4 4 3 2 3 ...
## $ Ease.of.Online.booking : int 3 3 2 5 3 2 2 4 2 3 ...
## $ Gate.location : int 1 3 2 5 3 1 3 4 2 4 ...
## $ Food.and.drink : int 5 1 5 2 4 1 2 5 4 2 ...
## $ Online.boarding : int 3 3 5 2 5 2 2 5 3 3 ...
## $ Seat.comfort : int 5 1 5 2 5 1 2 5 3 3 ...
## $ Inflight.entertainment : int 5 1 5 2 3 1 2 5 1 2 ...
## $ On.board.service : int 4 1 4 2 3 3 3 5 1 2 ...
## $ Leg.room.service : int 3 5 3 5 4 4 3 5 2 3 ...
## $ Baggage.handling : int 4 3 4 3 4 4 4 5 1 4 ...
## $ Checkin.service : int 4 1 4 1 3 4 3 4 4 4 ...
## $ Inflight.service : int 5 4 4 4 3 4 5 5 1 3 ...
## $ Cleanliness : int 5 1 5 2 3 1 2 4 2 2 ...
## $ Departure.Delay.in.Minutes : int 25 1 0 11 0 0 9 4 0 0 ...
## $ Arrival.Delay.in.Minutes : num 18 6 0 9 0 0 23 0 0 0 ...
## $ satisfaction : chr "neutral or dissatisfied" "neutral or dissatisfied" "satisfied" "neutral or dissatisfied" ...
# On retire les colonnes inutiles.
DF.train <- DF.train[,c(-1,-2)]
DF.test <- DF.test[,c(-1,-2)]
# On modifie le nom des lignes pour le style ;-)
row.names(DF.train) <- paste("n°", sep="", 1:dim(DF.train)[1])
row.names(DF.test) <- paste("n°", sep="", 1:dim(DF.test)[1])
# On renomme les colonnes pour avoir des noms moins longs (Utile pour l'affichage).
colnames(DF.train) <- c("Genre", "Fidélité", "Age", "Type.du.vol", "Classe", "Distance", "Wifi", "Horaire.pratique", "Facilité.resevation", "Emplacement.porte", "Nourriture", "Enregistrement.en.ligne", "Siege.confort", "Loisir", "On.board.service", "Espace.jambe", "Gestion.bagage", "Checkin.service", "Inflight.service", "Propreté", "Retard.depart", "Retard.arrivé", "Satisfaction")
colnames(DF.test) <- c("Genre", "Fidélité", "Age", "Type.du.vol", "Classe", "Distance", "Wifi", "Horaire.pratique", "Facilité.resevation", "Emplacement.porte", "Nourriture", "Enregistrement.en.ligne", "Siege.confort", "Loisir", "On.board.service", "Espace.jambe", "Gestion.bagage", "Checkin.service", "Inflight.service", "Propreté", "Retard.depart", "Retard.arrivé", "Satisfaction")
Petit avant gout des données :
Il y a autant d’hommes que de femmes dans notre jeu de données.
Il y a une majorité de personnes qui voyagent pour une raison professionnelle que personnelle.
Il y a beaucoup plus de clients loyaux que non loyaux.
Les voyageurs en classe Éco Plus représentent une petite partie des voyageurs, quant aux classes business et éco ils en représentent un peu moins de la moitié.
Pour finir, la proportion de voyageurs neutres ou insatisfaits et légèrement supérieure à celle des voyageurs satisfaits.
ON s’intéresse aux notes attribuées par les passagers. Ci-dessous on voit que les notes sont assez homogènes, elles ont toutes :
Un 1er quartile égal à 2 ou 3.
Une médiane égal à 3 ou 4.
Un 3-ème quartile égale à 4 ou 5.
Les moyennes pour les notes vont de 2.73 à 3.64.
## Wifi Horaire.pratique Facilité.resevation Emplacement.porte
## Min. :0.00 Min. :0.00 Min. :0.000 Min. :0.000
## 1st Qu.:2.00 1st Qu.:2.00 1st Qu.:2.000 1st Qu.:2.000
## Median :3.00 Median :3.00 Median :3.000 Median :3.000
## Mean :2.73 Mean :3.06 Mean :2.757 Mean :2.977
## 3rd Qu.:4.00 3rd Qu.:4.00 3rd Qu.:4.000 3rd Qu.:4.000
## Max. :5.00 Max. :5.00 Max. :5.000 Max. :5.000
## Nourriture Enregistrement.en.ligne Siege.confort Loisir
## Min. :0.000 Min. :0.00 Min. :0.00 Min. :0.000
## 1st Qu.:2.000 1st Qu.:2.00 1st Qu.:2.00 1st Qu.:2.000
## Median :3.000 Median :3.00 Median :4.00 Median :4.000
## Mean :3.202 Mean :3.25 Mean :3.44 Mean :3.358
## 3rd Qu.:4.000 3rd Qu.:4.00 3rd Qu.:5.00 3rd Qu.:4.000
## Max. :5.000 Max. :5.00 Max. :5.00 Max. :5.000
## On.board.service Espace.jambe Gestion.bagage Checkin.service
## Min. :0.000 Min. :0.000 Min. :1.000 Min. :0.000
## 1st Qu.:2.000 1st Qu.:2.000 1st Qu.:3.000 1st Qu.:3.000
## Median :4.000 Median :4.000 Median :4.000 Median :3.000
## Mean :3.383 Mean :3.351 Mean :3.632 Mean :3.304
## 3rd Qu.:4.000 3rd Qu.:4.000 3rd Qu.:5.000 3rd Qu.:4.000
## Max. :5.000 Max. :5.000 Max. :5.000 Max. :5.000
## Inflight.service Propreté
## Min. :0.000 Min. :0.000
## 1st Qu.:3.000 1st Qu.:2.000
## Median :4.000 Median :3.000
## Mean :3.641 Mean :3.286
## 3rd Qu.:5.000 3rd Qu.:4.000
## Max. :5.000 Max. :5.000
On peut aussi observer les autres variables quantitatives :
À vu d’oeil, l’âge suit une loi Gaussienne centrée autour de 40 (bien qu’elle ne prenne que des valeurs entières dans le jeu de données, la variable est Gaussienne dans la vraie vie).
La distance est une variable qui possède quelques valeurs extrêmes au dessus de 4000km.
Pour les retards il y a énormement de données abérrantes.
On commence notre analyse par une ACP sur les variables quantitatives.
On récupère toutes les données quantitatives et la satisfaction.
# On récupère Âge/Distance du vol/Retard Depart/Retard Arrivé (colonne 3/6/21/22), les notes (colonnes 7 à 20) et la satisfaction (colonne 23)
DF.tmp <- DF.train[,c(3,6,21,22,7:20,23)]
res.pca <- PCA(DF.tmp, quanti.sup=1:4, quali.sup=19, graph=FALSE)
Il est évident de penser que plus les notes attribuées par les voyageurs sont hautes et plus l’individu a de chance d’être satisfait, on peut le voir avec le graphe ci-dessous. Pour ne pas attribuer trop d’importance aux moyennes des notes des individus qui constituent un petit groupe, on associe une largeur par bande proportionnelle à la taille du groupe pour chaque moyenne attribuée.
Ainsi, on va faire notre ACP sur les notes.
Les individus ou variables peuvent être proches dans le plan mais eloignés dans l’espace s’ils sont mal représentés dans le plan.
Ainsi, il est important d’expliquer le modèle avec des variables bien representées dans le plan. Pour cela on veillera à ne pas prendre les variables et individus ayant un cos2 trop bas. Ici on choisit un cos2 égale à 0.68 afin qu’il ne soit pas trop bas et qu’on ait au moins 3 variables à utiliser afin d’expliquer nos individus sur les axes 1 et 2.
Ici l’axe 1 va opposer le confort à bord (droite) et l’inconfort (gauche), tandis que l’axe 2 fera le contraste sur les aspects techniques pour ce qui concerne le vol.
On peut voir que les variables quantitatives supplémentaires ne sont pas du tout interprétables (flèches en bleu) .
plot(res.pca,select="cos2 0.68", choix="varcor")
Lorsque l’angle entre deux axes est proche de 0°, les variables sont fortement corrélés positivement.
Lorsque l’angle est proche de 90°, les variables ne sont pas corrélés, ou très peu.
Lorsque l’angle est proche de 180°, les variables sont fortement corrélés négativement.
Ainsi, ci-dessus on voit que la facilité de reservation et le wifi sont fortement correlés.
Loisir et Facilité.reservation ne le sont pas, ou très peu.
Loisir et Wifi sont un peu corrélés positivement.
Verifions le :
Graphiquement (Facilité.resevation/Wifi) :
On remarque sur le boxplot qu’il semble y avoir une corrélation entre les notes attribuées à Wifi et à la Faclité de réservation, nous allons maintenant le vérifier.
Test du chi-deux (Facilité.resevation/Wifi) :
On rejette \(H_0\) car p-value<0.5 , ainsi on peut affirmer avec un risque de se tromper de 5% que ces deux variables sont corrélés.
chisq.test(DF.tmp$Facilité.resevation, DF.tmp$Wifi, simulate.p.value=TRUE)
##
## Pearson's Chi-squared test with simulated p-value (based on 2000
## replicates)
##
## data: DF.tmp$Facilité.resevation and DF.tmp$Wifi
## X-squared = 240142, df = NA, p-value = 0.0004998
Graphiquement on a pu voir qu’un passager donne, en moyenne, des notes égales à Facilité de reservation et Wifi.
Graphiquement (Loisir/Wifi) :
La corrélation entre Wifi et Loisir semble bien moins flagrante que celle vu précédemment, nous allons le verifier.
Test du Chi-deux (Loisir/Wifi) :
On rejette \(H_0\) car p-value<0.5 , ainsi on peut affirmer avec un risque de se tromper égal à 5% que ces deux variables sont corrélés.
chisq.test(DF.tmp$Loisir, DF.tmp$Wifi, simulate.p.value=TRUE)
##
## Pearson's Chi-squared test with simulated p-value (based on 2000
## replicates)
##
## data: DF.tmp$Loisir and DF.tmp$Wifi
## X-squared = 16454, df = NA, p-value = 0.0004998
Graphiquement on a pu voir qu’un passager donne, en moyenne, des notes plus élevées au loisir quand il note bien le Wifi.
Graphiquement (Loisir/Facilité.reservation) :
On vérifie une nouvelle fois la corrélation entre les deux variables.
Test du Chi-deux (Loisir/Facilité.resevartion) :
On rejette \(H_0\) car p-value<0.5 , ainsi on peut affirmer avec un risque de se tromper égal à 5% que ces deux variables sont corrélés.
chisq.test(DF.tmp$Loisir, DF.tmp$Facilité.resevation , simulate.p.value=TRUE)
##
## Pearson's Chi-squared test with simulated p-value (based on 2000
## replicates)
##
## data: DF.tmp$Loisir and DF.tmp$Facilité.resevation
## X-squared = 568.5, df = NA, p-value = 0.0004998
Le test du chi-deux montre que Loisir et Facilité.reservation sont corrélés, mais on peut voir graphiquement qu’elles ne le sont pas vraiment, on peut faire l’hypothèse que c’est parce qu’un passager qui met de bonnes notes en moyenne aura tendance à mettre de meilleures notes aux autres catégories, on peut faire le même raisonnement pour les mauvaises notes.
Ci-dessous on peut voir une nette séparation entre les individus satisfaits et non satisfaits. Les individus satisfaits sont ceux s’étant amusé. À l’inverse les individus non satisfaits ont octroyé des notes plus basses concernant les loisirs. On ne peut pas vraiment dire pour l’instant si la facilité de réservation et le wifi à bord influent sur la satisfaction du passager.
Ici par exemple l’individu n°70657 est satisfait, or il a mal noté les loisirs, le wifi et la facilité de réservation. Sa satisfaction est probablement influencée par d’autres variables, qui sont qualitatives. On se penchera sur ce sujet lors de l’ACM.
plot(res.pca,habillage=19, select="cos2 0.93", choix="ind",cex = 0.8)
L’individu qui contribue le plus à l’axe 1 y contribue à environ 0.01%.
max(res.pca$ind$contrib[,1])
## [1] 0.009641166
Il n’y a pas d’individus atypiques, ce qui est normal car nos données sont des notes comprises entre 0 et 5 et on a vu qu’elles étaient homogènes.
Observons maintenant quelle part des données expliquent les composantes.
Premièrement, on peut voir que les 3 premiers axes expliquent bien l’inertie sur les données : Les axes étant orthogonaux, ils expliquent 27.14% + 16.87% + 15.47% = 59.48% de l’inertie.
Quant aux axes 1 et 2, ils prennent en compte 27.14% + 16.87% = 44.01% du jeu de données.
On peut aussi voir que l’axe 2 et 3 expliquent à peu près autant l’un que l’autre l’inertie, ainsi on pourra aussi visualiser les données projetées sur le plan formé par l’axe 1 et 3 (voir 2 et 3).
On a un nouveau cercle de corrélation, ici on voit que :
Le confort des sièges, la nourriture et la propreté sont fortement corrélés.
La gestion des bagages et les services proposés sont fortement corrélés.
Dans ce plan les loisirs sont presque totalement expliqués par l’axe 1.
L’axe 3 oppose le “confort” aux services qui sont faiblement corrélés dû à l’angle proche de 90 degrés
plot(res.pca, select="cos2 0.60", choix="varcor", axes = c(1,3))
Ci-dessous on voit donc que les passagers sont en général plus satisfait quand ils se sont amusé (loisirs), que le service était agréable (Gestion bagage, Inflight.service, On.board.service) et qu’ils ont passé un vol confortable (Siege.confort, nourriture, propreté), et inversement pour les passagers non satisfaits.
plot(res.pca, habillage=19, select="cos2 0.9", cex=0.8, choix="ind", axes = c(1,3))
Ici on a le cercle de corrélation avec l’axe 2 et 3:
plot(res.pca, select="cos2 0.6", choix="varcor", axes = c(2,3))
Il n’y a pas grand-chose à interpréter, car le barycentre des voyageurs satisfaits et non satisfaits sont tous les 2 proches du centre de gravité de ce plan.
plot(res.pca, invisible="ind", choix="ind", axes=c(2,3))
Certains passagers ont attribué comme notes 0 pour certaines catégories du vol, on décide de ne pas faire de transformation par l’inverse, car \(\frac{1}{0}\) est un quotient indéterminé, ni de log-transformation car \(\log(0)\) est indéterminé.
On effectue la transformation ”double centrage” sur les données transformées par racine carrée afin de voir si on peut faire gagner en contribution les premières composantes afin d’être plus précis lors de nos analyses.
# On récupère le notes dans le dataframe.
DF.tmp <- sqrt(DF.train[,7:20])
# On centre et on réduit par rapport aux colones.
DF.tmp <- scale(DF.tmp)
# ACP sur les données transformées.
res.pca <- PCA(DF.tmp, graph=FALSE)
barplot(res.pca$eig[,2], col=rainbow(n=14,alpha=0.6,start=0.66,end=1),
main="Pourcentage d'intertie expliquée par chaque axe\n(Données transformées par racine carrée)",
ylab="Contribution en %")
lines(seq(0.75,16.3,(16.3-0.75)/13), res.pca$eig[,2], type="b")
text(seq(0.75,16.3,(16.3-0.75)/13), res.pca$eig[,2]-1, paste(round(res.pca$eig[,2],2),"%"), cex=0.7)
Les transformations ne nous ont pas fait gagner plus d’informations au niveau des 3 premiers axes, on s’arrête là pour l’ACP.
Ici, on a pu étudier l’impact des variables quantitatives sur la satisfaction des gens pour un trajet en avion. Il en est ressorti que les services proposés dans l’avion et le confort à bord sont des aspects primordiaux pour la satisfaction des voyageurs, mais que cela n’expliquait pas totalement les données.
Intéressons-nous maintenant aux données qualitatives.
On effectue une ACM :
res.mca <- MCA(DF.tmp, quali.sup = 5, graph=FALSE)
On peut observer que la première dimension influe à un peu plus de 30%, quant aux dimensions 2, 3, 4, elles influent toutes autour de 20%. Il sera donc sûrement nécessaire de s’intéresser à ces 4 dimensions.
par(mfrow = c(2,2))
for(i in 1:4){
barplot(res.mca$var$cos2[,i], las = 2, cex.names = 0.64,
col=rainbow(n=9,alpha=0.6,start=(i-1)/4,end=i/4),
main=paste("Cos2 des modalités pour l'axe",i))
}
En se référant aux cos2 (cos2 > 0.7) des barplots précédents :
L’axe 1 oppose les passagers qui voyagent pour le business et les passagers qui voyagent pour un motif personnel. Ceux qui voyagent pour le travail sont en général plus satisfaits et ceux qui voyagent pour un motif personnel sont en général sans avis ou insatisfaits.
L’axe 2 oppose les passagers loyaux aux non-loyaux, il en résulte que les passagers non-loyaux sont plus souvent insatisfaits et que les passagers loyaux.
Les 2 axes prennent aussi en compte à eux deux les voyageurs qui voyagent en business et en éco.
On peut voir que les voyageurs en éco sont moins souvent satisfaits de leur voyage que ceux qui sont en business classe.
plot(res.mca, invisible="ind", axes=c(1,2))
En se référant aux cos2 (cos2 > 0.7) pour l’axe 3 des barplots précédents :
On peut voir que l’axe 3 oppose les personnes de sexe diffèrent, on ne peut pas dire grand-chose quant à l’influence sur la satisfaction du client, on pourrait peut-être dire que les femmes sont un peu moins satisfaites, mais c’est à vérifier.
Vérifions le graphiquement:
Sur le barplot on voit donc que, pour notre jeu de données, les hommes sont un peu plus satisfait en général que les femmes. Mais rien de significativement très différent.
tab = table(DF.train$Genre, DF.train$Satisfaction)
barplot(tab/rowSums(tab), beside=TRUE, col=c("pink","blue"), legend.text=c("Female","Male"))
plot(res.mca, invisible="ind", axes=c(1,3))
Pour prendre en compte les voyageurs en classe éco plus on visualise sur le plan formé par l’axe 3 et 4.
On peut voir ici que les voyageurs en classe éco plus sont moins satisfaits de leur voyages, ils sont très excentrés car ils représentent des données inhabituelles.
plot(res.mca, invisible="ind", axes=c(3,4))
Rappelez-vous de l’individu n°70657, il était satisfait de son vol malgré les mauvaises notes attribuées aux différentes catégories. On voit qu’il possède toutes les modalités influant positivement sur la satisfaction. Ceci montre bien que l’analyse des données qualitatives est importante, car on a eu des informations qu’on ne pouvait pas avoir avec l’ACP.
D’après l’ACM :
Si un passager voyage pour des raisons personnelles, il a moins de chance d’être satisfait du vol qu’un passager qui voyage pour le business.
Si le passager est un client fidèle (Loyal custommer) il a plus de chance d’être satisfait du vol qu’un passager qui est déloyal (Disloyal custommer).
Si un voyageur est en classe business, cela influera positivement sur sa satisfaction, alors que s’il est en classe Eco cela influera négativement. Les passagers Éco plus sont particuliers, mais le fait d’être en classe Éco plus influe négativement sur leur satisfaction.
Le sexe de l’individu n’a pas l’air d’influer significativement sur la satisfaction, mais on peut faire l’hypothèse que les femmes sont moins satisfaites que les hommes.
Nous allons maintenant appliquer les méthodes de clustering vues en cours. Le regroupement “d’individus” ne sera pas très intéressant à réaliser, nous allons plutôt définir des profils avec l’ensembles des modalités. Ces profils pourront être regroupés en clusters.
Dans cette partie, on considère l’âge comme une variable qualitative à quatres modalités :
Avant la transformation, on vérifie si l’âge a un impact sur la satisfaction des passagers.
On a un nouveau dataframe pour les catégories d’âge comme variable qualitative, il nous permettra de créer les différents profils :
Nous allons maintenant regrouper les individus par groupes en utilisant les différentes méthodes de clustering. On pourra de cette manière déterminer quels sont les profils les plus proches en terme de notation.
On ne garde que les profils qui comptent plus de 30 personnes afin d’avoir des résultats intéressants a analyser.
On compte maintenant 38 profils dont on donne la liste ci-dessous.
On fait la moyenne des notes de chaque profil :
On commence par faire un clustering hiérarchique pour déterminer le nombre de groupes (\(K\)) idéal.
\(K=6\) est un bon compromis.
K=6
# On applique la méthode euclidienne pour avoir les meilleures distances en 2D
DF.agg.dist = dist(DF.agg, method="euclidean")
cah.ward = hclust(DF.agg.dist, method="ward.D2")
# On ajuste la taille des caractères pour un meilleur affichage
par(cex.main=3, cex=0.4)
plot(cah.ward, hang=-1)
rect.hclust(cah.ward,K)
On a donc réussi à créer 6 groupes de profils similaires sur les 38 profils qu’on est en train d’étudier.
Penchons nous sur la composition de ces groupes et analysons les graces aux silhouettes:
Dans le tableau ci-dessus on peut voir que :
Le groupe 1 ne rassemble que des individus en business class.
Le groupe 2 réunit en grande majorité les individus en business class voyageant pour le business.
Le groupe 3 regroupe les clients fidèles.
Le groupe 4 est particulier et rassemble seulement deux profils, en particulier, des profils déloyaux qui voyagent en classe éco.
Le groupe 5 réunit des passagers majoritairement en dessous de 39 ans voyageant en classe éco ou éco plus.
Le groupe 6 regroupe les passagers de 39 ans et plus, voyageant en éco ou éco plus.
On remarque qu’en moyenne les groupes sont assez bien séparés, en effet, les silhouettes moyennes par groupe ne tombent jamais en dessous de 0.38 et la moyenne des silhouettes est de 0.46.
On peut voir que certain profils comme :
ont des silhouettes proche de 0, aux alentour de 0.15, ainsi ces profils chevauchent un ou plusieur groupes mais reste bien classés car leur silhouette est positive, on peut se référer au tableau dans la colonne “neighbor” pour voir quel groupe est le plus proche de leur profil.
Il n’est pas nécessaire de décrire toutes les moyennes des notes par cluster.
On va s’intéresser à la fréquence des individus satisfaits par cluster.
On voit que les fréquences diffèrent selon les groupes, ainsi, certains groupes sont en moyenne plus satisfait que d’autres.
Par exemple, le cluster n°3 possède la fréquence de satisfaction la plus élevé avec près de 73%, ainsi un individu ayant un profil associé à ce cluster aura tendance à être satisfait. À l’inverse, un passager dont le profil appartient au cluster n°4, où la fréquence de satisfaction est de 7%, aura tendance à être neutre ou insatisfait.
On a donc réussi à trouver des groupes de profils qui diffèrent par leur notes et ainsi la fréquence de satisfaction des individus qui le constituent.
Le clustering hiérarchique nous permet de déterminer le nombre de groupes qui semble idéal : \(K = 6\). Les notes attribuées selon les différents groupes ne sont pas significativement différentes.
On peut vérifié si le \(K=6\) mis en évidence par le clustering cah était un bon compromis.
En effet, on voit que la diminution de l’inertie intra-classe est moins significative à partir de \(K=6\), on aurait pu prendre \(K\) un peu plus grand, mais pourquoi s’embêter avec un nombre de clusters trop élevé quand l’objectif est de regrouper au maximum sans perdre trop d’inertie.
On réalise ensuite le K-means, avec le meme nombre de groupes qu’avec le CAH.
On voit que l’algorithme du k-means nous donne les mêmes groupes que celui du clustering hiérarchique.
## groupes.kmeans
## groupes.cah 1 2 3 4 5 6
## 1 4 0 0 0 0 0
## 2 0 0 0 7 0 0
## 3 0 0 0 0 8 0
## 4 0 0 2 0 0 0
## 5 0 10 0 0 0 0
## 6 0 0 0 0 0 7
Vérifions :
On représente les clusters en 2D à l’aide des composantes principales. On remarque que certains clusters se chevauchent, cette représentation montre l’emplacement de chacun des profils et du groupe auquel il appartient.
On remarque qu’un groupe numéro 3 est isolé du reste des observations, c’est celui possédant le plus faible taux de satisfaction (0.07%). Sur le graphe des principales composantes (axes 1 et 2), ce groupe se situe à gauche, or on a vu dans l’ACP que les individus les moins satisfait se situaient bel et bien à gauche de l’axe 1.
Nous allons maintenant utiliser les algorithmes de classification supervisée pour tenter de prédire la satisfaction des voyageurs. Penchons nous sur l’arbre de décision suffisamment élagué pour être lisible.
On peut observer que les voyageurs ayant mis une note pour l’enregistrement en ligne inférieure à 4, et une note pour le wifi comprise entre 1 inclus et 4 exclus sont plus fréquemment neutre ou insatisfait, seulement 6% d’entre eux sont satisfaits. De plus, ils représentent 44% du jeu d’entrainement.
Un voyageur ayant noté à 4 ou 5 l’enregistrement en ligne, qui voyage pour des raison personnelles et ayant noté 5 le Wifi, sera satisfait à 100%. Ils représentent 1% du jeu d’entrainement.
res.tree <- rpart(Satisfaction~., data=DF.train)
rpart.plot(res.tree, type=0)
L’arbre de décision prédit correctement la satisfaction des voyageurs avec 88.4% de précision binaire.
pred.class.tree <- predict(res.tree, newdata=DF.test[,-23], type="class")
pred.prop.tree <- predict(res.tree, newdata=DF.test[,-23], type="prob")
score.tree = sum((pred.class.tree == DF.test[,23])*1)/length(pred.class.tree)
score.tree
## [1] 0.883791
Optimisons le paramètre de complexité (cp) afin d’avoir une élagation optimale pour l’arbre et d’ainsi minimiser le risque de surapprentissage.
On remarque que l’arbre est illisible, on pourra quand même trouver le score de ce modèle optimisé.
res.tree.opt <- rpart(Satisfaction~.,DF.train,control=rpart.control(minsplit = 50 ,cp=0))
cp.opt <- res.tree.opt$cptable[which.min(res.tree.opt$cptable[, "xerror"]), "CP"]
res.tree.opt <- prune(res.tree.opt,cp=cp.opt)
rpart.plot(res.tree.opt, type=0)
L’arbre de décision optimisé a un score de 95.5%.
pred.class.tree.opt <- predict(res.tree.opt, newdata=DF.test[,-23], type="class")
pred.prob.tree.opt <- predict(res.tree.opt, newdata=DF.test[,-23], type="prob")
score.tree.opt = sum((pred.class.tree.opt==DF.test[,23])*1)/length(pred.class.tree.opt)
score.tree.opt
## [1] 0.9545437
On utilise les méthodes de classification supervisée pour prédire le comportement de notre data.test.
Avec ces méthodes, on tente de prédire la satisfaction des clients.
On crée nos modèles :
res.lda <- lda(Satisfaction~.,data=DF.train[,c(7:20,23)])
res.qda <- qda(Satisfaction~.,data=DF.train[,c(7:20,23)])
Le score obtenu par la méthode lda est de 81.3%
# --- LDA
pred.class.lda <- predict(res.lda, newdata = DF.test[,7:20])$class
pred.prob.lda <- predict(res.lda, newdata = DF.test[,7:20])$posterior[,2]
score.lda = sum(pred.class.lda==DF.test[,23])/length(pred.class.lda)
score.lda
## [1] 0.8127293
Le score obtenu par la méthode qda est de 81.6%
# --- QDA
pred.class.qda <- predict(res.qda, newdata = DF.test[,7:20])$class
pred.prob.qda <- predict(res.qda, newdata = DF.test[,7:20])$posterior[,2]
score.qda = sum(pred.class.qda==DF.test[,23])/length(pred.class.qda)
score.qda
## [1] 0.8156258
On lance une procédure de sélection de modèle avec une méthode de cross validation 5-fold. Le temps d’exécution de la méthode par défaut (10-fold) était trés long du à la taille du jeu de données. Afin de construire notre modèle nous nous appuyons “seulement” sur les 10 000 premiers individus, et non les 100 000, car sinon la selection de modèle est très longue.
res.stepwise.lda=stepclass(Satisfaction ~., data=DF.train[1:10000,c(7:20,23)] , method="lda", direction="backward", fold=5)
## correctness rate: 0.8143; starting variables (14): Wifi, Horaire.pratique, Facilité.resevation, Emplacement.porte, Nourriture, Enregistrement.en.ligne, Siege.confort, Loisir, On.board.service, Espace.jambe, Gestion.bagage, Checkin.service, Inflight.service, Propreté
## correctness rate: 0.8146; out: "Facilité.resevation"; variables (13): Wifi, Horaire.pratique, Emplacement.porte, Nourriture, Enregistrement.en.ligne, Siege.confort, Loisir, On.board.service, Espace.jambe, Gestion.bagage, Checkin.service, Inflight.service, Propreté
##
## hr.elapsed min.elapsed sec.elapsed
## 0.000 0.000 8.998
res.stepwise.qda=stepclass(Satisfaction ~., data=DF.train[1:10000,c(7:20,23)] , method="qda", direction="backward", fold=5)
## correctness rate: 0.8252; starting variables (14): Wifi, Horaire.pratique, Facilité.resevation, Emplacement.porte, Nourriture, Enregistrement.en.ligne, Siege.confort, Loisir, On.board.service, Espace.jambe, Gestion.bagage, Checkin.service, Inflight.service, Propreté
## correctness rate: 0.8379; out: "Nourriture"; variables (13): Wifi, Horaire.pratique, Facilité.resevation, Emplacement.porte, Enregistrement.en.ligne, Siege.confort, Loisir, On.board.service, Espace.jambe, Gestion.bagage, Checkin.service, Inflight.service, Propreté
## correctness rate: 0.8445; out: "On.board.service"; variables (12): Wifi, Horaire.pratique, Facilité.resevation, Emplacement.porte, Enregistrement.en.ligne, Siege.confort, Loisir, Espace.jambe, Gestion.bagage, Checkin.service, Inflight.service, Propreté
## correctness rate: 0.848; out: "Inflight.service"; variables (11): Wifi, Horaire.pratique, Facilité.resevation, Emplacement.porte, Enregistrement.en.ligne, Siege.confort, Loisir, Espace.jambe, Gestion.bagage, Checkin.service, Propreté
## correctness rate: 0.8508; out: "Propreté"; variables (10): Wifi, Horaire.pratique, Facilité.resevation, Emplacement.porte, Enregistrement.en.ligne, Siege.confort, Loisir, Espace.jambe, Gestion.bagage, Checkin.service
##
## hr.elapsed min.elapsed sec.elapsed
## 0.000 0.000 18.006
res.stepwise.lda = lda(res.stepwise.lda$formula , data = DF.train[1:10000,c(7:20,23)] )
res.stepwise.qda = qda(res.stepwise.qda$formula , data = DF.train[1:10000,c(7:20,23)] )
On prédit la satisfaction des passagers
pred.stepwise.lda <- predict(res.stepwise.lda,newdata=DF.test[,c(7:20,23)])$posterior[,2]
pred.stepwise.qda <- predict(res.stepwise.qda,newdata=DF.test[,c(7:20,23)])$posterior[,2]
La séléction de modèle avec lda a un score de 81.3%
pred.prop.stepwise.lda <- predict(res.stepwise.lda,newdata=DF.test[,c(7:20,23)])$posterior[,2]
score.stepwise.lda = sum(round(pred.stepwise.lda)==(DF.test[,c(7:20,23)]$Satisfaction =="satisfied")*1)/dim(DF.test)[1]
score.stepwise.lda
## [1] 0.810721
La séléction de modèle avec qda a un score de 84.5%
pred.prop.stepwise.qda <- predict(res.stepwise.qda,newdata=DF.test[,c(7:20,23)])$posterior[,2]
score.stepwise.qda <- sum(round(pred.prop.stepwise.qda)==(DF.test[,c(7:20,23)]$Satisfaction =="satisfied")*1)/dim(DF.test)[1]
score.stepwise.qda
## [1] 0.8396864
On obtient un score aux alentours de 96% avec le Random Forest
forest=randomForest(factor(DF.train$Satisfaction)~., DF.train, mtry=5, ntree = 15)
pred.class.RF=predict(forest, newdata=DF.test, type="class")
pred.prob.RF = predict(forest, newdata=DF.test, type="prob")
score.RF=sum(pred.class.RF==DF.test[,23])/length(pred.class.RF)
score.RF
## [1] 0.9611478
# ----------------------------------------------------------------------------
ROC.lda <- roc(DF.test$Satisfaction, pred.prob.lda)
ROC.qda <- roc(DF.test$Satisfaction, pred.prob.qda)
ROC.stepwise.lda <- roc(DF.test$Satisfaction, pred.prop.stepwise.lda)
ROC.stepwise.qda <- roc(DF.test$Satisfaction, pred.prop.stepwise.qda)
ROC.tree <- roc(DF.test$Satisfaction, pred.prop.tree[,2])
ROC.tree.opt <- roc(DF.test$Satisfaction, pred.prob.tree.opt[,2])
ROC.RF <- roc(DF.test$Satisfaction, pred.prob.RF[,2])
On remarque, grâce aux courbes ROC, que les meilleurs modèles sont l’arbre de décision optimisé et la Random Forest. En effet, l’air sous la courbe ROC des ces deux modèles est plus élevé que celles des autres modèles. De plus ces modèles sont très bon car l’air sous leur courbe ROC se rapproche de 1.
On passe en langage python pour réaliser la prédiction par réseaux de neuronnes
import pandas as pd
import numpy as np
import keras
DF_train = pd.read_csv("data/train.csv")
DF_test = pd.read_csv("data/test.csv")
DF_train.drop(["Unnamed: 0","id"], axis=1, inplace=True)
DF_test.drop(["Unnamed: 0","id"], axis=1, inplace=True)
DF_train = DF_train.dropna()
DF_test = DF_test.dropna()
DF_train.Gender = (DF_train.Gender == "Male")*1 # Male = 1 ; Femme = 0
DF_test.Gender = (DF_test.Gender == "Male")*1
DF_train.iloc[:,1] = (DF_train.iloc[:,1] == 'Loyal Customer')*1 # Loyal Customer = 1 ; disloyal Customer = 0
DF_test.iloc[:,1] = (DF_test.iloc[:,1] == 'Loyal Customer')*1
DF_train.iloc[:,3] = (DF_train.iloc[:,3] == 'Business travel')*1 # Business travel = 1 ; Personal Travel = 0
DF_test.iloc[:,3] = (DF_test.iloc[:,3] == 'Business travel')*1
DF_train.iloc[DF_train.iloc[:,4] == 'Business',4] = 2 # Business = 2
DF_train.iloc[DF_train.iloc[:,4] == 'Eco Plus',4] = 1 # Eco PLus = 1
DF_train.iloc[DF_train.iloc[:,4] == 'Eco',4] = 0 # Eco = 0
DF_test.iloc[DF_test.iloc[:,4] == 'Business',4] = 2
DF_test.iloc[DF_test.iloc[:,4] == 'Eco Plus',4] = 1
DF_test.iloc[DF_test.iloc[:,4] == 'Eco',4] = 0
DF_train.iloc[:,-1] = (DF_train.iloc[:,-1] == 'satisfied')*1 # satisfied = 1 ; neutral or disatisfied = 0
DF_test.iloc[:,-1] = (DF_test.iloc[:,-1] == 'satisfied')*1
sample_train = DF_train.to_numpy()
sample_test = DF_test.to_numpy()
X_train = []
Y_train = []
X_test = []
Y_test = []
for i in range(len(sample_train)):
X_train.append(sample_train[i][:-1])
Y_train.append(sample_train[i][-1])
X_train = np.array(X_train)
Y_train = np.array(Y_train)
for i in range(len(sample_test)):
X_test.append(sample_test[i][:-1])
Y_test.append(sample_test[i][-1])
X_test = np.asarray(X_test).astype(np.float32)
Y_test = np.asarray(Y_test).astype(np.float32)
model = keras.Sequential()
model.add(keras.layers.Dense(128,activation="tanh"))
model.add(keras.layers.Dense(16,activation="softmax"))
model.add(keras.layers.Dense(1,activation="sigmoid"))
model.compile(optimizer="Adam",
loss="binary_crossentropy",
metrics=['accuracy'])
X_train = np.asarray(X_train).astype(np.float32)
Y_train = np.asarray(Y_train).astype(np.float32)
model.fit(X_train, Y_train, epochs=100, batch_size=1024)
## Epoch 1/100
##
1/102 [..............................] - ETA: 44:27 - loss: 0.7032 - accuracy: 0.4521
18/102 [====>.........................] - ETA: 0s - loss: 0.6945 - accuracy: 0.4920
38/102 [==========>...................] - ETA: 0s - loss: 0.6897 - accuracy: 0.5191
56/102 [===============>..............] - ETA: 0s - loss: 0.6872 - accuracy: 0.5298
75/102 [=====================>........] - ETA: 0s - loss: 0.6848 - accuracy: 0.5371
96/102 [===========================>..] - ETA: 0s - loss: 0.6824 - accuracy: 0.5456
102/102 [==============================] - 27s 3ms/step - loss: 0.6816 - accuracy: 0.5485
## Epoch 2/100
##
1/102 [..............................] - ETA: 0s - loss: 0.6554 - accuracy: 0.6387
22/102 [=====>........................] - ETA: 0s - loss: 0.6445 - accuracy: 0.6650
40/102 [==========>...................] - ETA: 0s - loss: 0.6402 - accuracy: 0.6758
58/102 [================>.............] - ETA: 0s - loss: 0.6367 - accuracy: 0.6850
77/102 [=====================>........] - ETA: 0s - loss: 0.6332 - accuracy: 0.6931
96/102 [===========================>..] - ETA: 0s - loss: 0.6295 - accuracy: 0.7006
102/102 [==============================] - 0s 3ms/step - loss: 0.6281 - accuracy: 0.7032
## Epoch 3/100
##
1/102 [..............................] - ETA: 0s - loss: 0.5664 - accuracy: 0.8037
18/102 [====>.........................] - ETA: 0s - loss: 0.5647 - accuracy: 0.8048
35/102 [=========>....................] - ETA: 0s - loss: 0.5628 - accuracy: 0.8030
49/102 [=============>................] - ETA: 0s - loss: 0.5606 - accuracy: 0.8039
60/102 [================>.............] - ETA: 0s - loss: 0.5588 - accuracy: 0.8049
72/102 [====================>.........] - ETA: 0s - loss: 0.5569 - accuracy: 0.8059
85/102 [========================>.....] - ETA: 0s - loss: 0.5553 - accuracy: 0.8064
98/102 [===========================>..] - ETA: 0s - loss: 0.5540 - accuracy: 0.8067
102/102 [==============================] - 0s 4ms/step - loss: 0.5535 - accuracy: 0.8069
## Epoch 4/100
##
1/102 [..............................] - ETA: 0s - loss: 0.5207 - accuracy: 0.8066
13/102 [==>...........................] - ETA: 0s - loss: 0.5195 - accuracy: 0.8171
26/102 [======>.......................] - ETA: 0s - loss: 0.5193 - accuracy: 0.8177
43/102 [===========>..................] - ETA: 0s - loss: 0.5186 - accuracy: 0.8188
63/102 [=================>............] - ETA: 0s - loss: 0.5171 - accuracy: 0.8201
80/102 [======================>.......] - ETA: 0s - loss: 0.5156 - accuracy: 0.8210
98/102 [===========================>..] - ETA: 0s - loss: 0.5140 - accuracy: 0.8219
102/102 [==============================] - 0s 3ms/step - loss: 0.5136 - accuracy: 0.8221
## Epoch 5/100
##
1/102 [..............................] - ETA: 0s - loss: 0.5098 - accuracy: 0.8047
20/102 [====>.........................] - ETA: 0s - loss: 0.4959 - accuracy: 0.8240
39/102 [==========>...................] - ETA: 0s - loss: 0.4921 - accuracy: 0.8277
55/102 [===============>..............] - ETA: 0s - loss: 0.4897 - accuracy: 0.8297
67/102 [==================>...........] - ETA: 0s - loss: 0.4884 - accuracy: 0.8306
78/102 [=====================>........] - ETA: 0s - loss: 0.4873 - accuracy: 0.8314
90/102 [=========================>....] - ETA: 0s - loss: 0.4862 - accuracy: 0.8321
102/102 [==============================] - 0s 4ms/step - loss: 0.4853 - accuracy: 0.8326
## Epoch 6/100
##
1/102 [..............................] - ETA: 0s - loss: 0.4803 - accuracy: 0.8281
14/102 [===>..........................] - ETA: 0s - loss: 0.4669 - accuracy: 0.8365
29/102 [=======>......................] - ETA: 0s - loss: 0.4668 - accuracy: 0.8364
47/102 [============>.................] - ETA: 0s - loss: 0.4676 - accuracy: 0.8358
65/102 [==================>...........] - ETA: 0s - loss: 0.4677 - accuracy: 0.8355
84/102 [=======================>......] - ETA: 0s - loss: 0.4673 - accuracy: 0.8356
102/102 [==============================] - ETA: 0s - loss: 0.4665 - accuracy: 0.8360
102/102 [==============================] - 0s 3ms/step - loss: 0.4665 - accuracy: 0.8361
## Epoch 7/100
##
1/102 [..............................] - ETA: 0s - loss: 0.4475 - accuracy: 0.8555
19/102 [====>.........................] - ETA: 0s - loss: 0.4556 - accuracy: 0.8396
31/102 [========>.....................] - ETA: 0s - loss: 0.4569 - accuracy: 0.8373
43/102 [===========>..................] - ETA: 0s - loss: 0.4570 - accuracy: 0.8368
52/102 [==============>...............] - ETA: 0s - loss: 0.4567 - accuracy: 0.8368
63/102 [=================>............] - ETA: 0s - loss: 0.4560 - accuracy: 0.8372
76/102 [=====================>........] - ETA: 0s - loss: 0.4549 - accuracy: 0.8377
87/102 [========================>.....] - ETA: 0s - loss: 0.4540 - accuracy: 0.8382
102/102 [==============================] - 0s 4ms/step - loss: 0.4528 - accuracy: 0.8389
## Epoch 8/100
##
1/102 [..............................] - ETA: 0s - loss: 0.4390 - accuracy: 0.8486
20/102 [====>.........................] - ETA: 0s - loss: 0.4386 - accuracy: 0.8449
39/102 [==========>...................] - ETA: 0s - loss: 0.4368 - accuracy: 0.8459
59/102 [================>.............] - ETA: 0s - loss: 0.4356 - accuracy: 0.8465
78/102 [=====================>........] - ETA: 0s - loss: 0.4347 - accuracy: 0.8468
93/102 [==========================>...] - ETA: 0s - loss: 0.4339 - accuracy: 0.8472
102/102 [==============================] - 0s 3ms/step - loss: 0.4335 - accuracy: 0.8474
## Epoch 9/100
##
1/102 [..............................] - ETA: 0s - loss: 0.4148 - accuracy: 0.8555
14/102 [===>..........................] - ETA: 0s - loss: 0.4176 - accuracy: 0.8531
27/102 [======>.......................] - ETA: 0s - loss: 0.4193 - accuracy: 0.8525
38/102 [==========>...................] - ETA: 0s - loss: 0.4193 - accuracy: 0.8524
52/102 [==============>...............] - ETA: 0s - loss: 0.4194 - accuracy: 0.8523
65/102 [==================>...........] - ETA: 0s - loss: 0.4193 - accuracy: 0.8522
81/102 [======================>.......] - ETA: 0s - loss: 0.4192 - accuracy: 0.8522
99/102 [============================>.] - ETA: 0s - loss: 0.4191 - accuracy: 0.8520
102/102 [==============================] - 0s 4ms/step - loss: 0.4191 - accuracy: 0.8519
## Epoch 10/100
##
1/102 [..............................] - ETA: 0s - loss: 0.4330 - accuracy: 0.8389
21/102 [=====>........................] - ETA: 0s - loss: 0.4500 - accuracy: 0.8278
39/102 [==========>...................] - ETA: 0s - loss: 0.4473 - accuracy: 0.8307
57/102 [===============>..............] - ETA: 0s - loss: 0.4448 - accuracy: 0.8323
73/102 [====================>.........] - ETA: 0s - loss: 0.4426 - accuracy: 0.8336
86/102 [========================>.....] - ETA: 0s - loss: 0.4407 - accuracy: 0.8347
100/102 [============================>.] - ETA: 0s - loss: 0.4389 - accuracy: 0.8357
102/102 [==============================] - 0s 3ms/step - loss: 0.4386 - accuracy: 0.8359
## Epoch 11/100
##
1/102 [..............................] - ETA: 0s - loss: 0.3911 - accuracy: 0.8711
15/102 [===>..........................] - ETA: 0s - loss: 0.4025 - accuracy: 0.8604
28/102 [=======>......................] - ETA: 0s - loss: 0.4039 - accuracy: 0.8586
42/102 [===========>..................] - ETA: 0s - loss: 0.4040 - accuracy: 0.8579
57/102 [===============>..............] - ETA: 0s - loss: 0.4043 - accuracy: 0.8572
77/102 [=====================>........] - ETA: 0s - loss: 0.4039 - accuracy: 0.8569
96/102 [===========================>..] - ETA: 0s - loss: 0.4035 - accuracy: 0.8569
102/102 [==============================] - 0s 3ms/step - loss: 0.4034 - accuracy: 0.8569
## Epoch 12/100
##
1/102 [..............................] - ETA: 0s - loss: 0.4213 - accuracy: 0.8428
19/102 [====>.........................] - ETA: 0s - loss: 0.4123 - accuracy: 0.8450
38/102 [==========>...................] - ETA: 0s - loss: 0.4108 - accuracy: 0.8465
58/102 [================>.............] - ETA: 0s - loss: 0.4087 - accuracy: 0.8481
76/102 [=====================>........] - ETA: 0s - loss: 0.4071 - accuracy: 0.8492
93/102 [==========================>...] - ETA: 0s - loss: 0.4065 - accuracy: 0.8496
102/102 [==============================] - 0s 3ms/step - loss: 0.4064 - accuracy: 0.8496
## Epoch 13/100
##
1/102 [..............................] - ETA: 0s - loss: 0.4192 - accuracy: 0.8408
19/102 [====>.........................] - ETA: 0s - loss: 0.4146 - accuracy: 0.8438
38/102 [==========>...................] - ETA: 0s - loss: 0.4264 - accuracy: 0.8324
56/102 [===============>..............] - ETA: 0s - loss: 0.4267 - accuracy: 0.8316
74/102 [====================>.........] - ETA: 0s - loss: 0.4247 - accuracy: 0.8328
93/102 [==========================>...] - ETA: 0s - loss: 0.4221 - accuracy: 0.8347
102/102 [==============================] - 0s 3ms/step - loss: 0.4208 - accuracy: 0.8357
## Epoch 14/100
##
1/102 [..............................] - ETA: 0s - loss: 0.3773 - accuracy: 0.8623
20/102 [====>.........................] - ETA: 0s - loss: 0.3872 - accuracy: 0.8576
40/102 [==========>...................] - ETA: 0s - loss: 0.3878 - accuracy: 0.8572
57/102 [===============>..............] - ETA: 0s - loss: 0.3877 - accuracy: 0.8573
75/102 [=====================>........] - ETA: 0s - loss: 0.3872 - accuracy: 0.8576
94/102 [==========================>...] - ETA: 0s - loss: 0.3865 - accuracy: 0.8580
102/102 [==============================] - 0s 3ms/step - loss: 0.3862 - accuracy: 0.8582
## Epoch 15/100
##
1/102 [..............................] - ETA: 0s - loss: 0.3835 - accuracy: 0.8604
21/102 [=====>........................] - ETA: 0s - loss: 0.3810 - accuracy: 0.8609
40/102 [==========>...................] - ETA: 0s - loss: 0.3781 - accuracy: 0.8625
59/102 [================>.............] - ETA: 0s - loss: 0.3763 - accuracy: 0.8637
79/102 [======================>.......] - ETA: 0s - loss: 0.3751 - accuracy: 0.8644
99/102 [============================>.] - ETA: 0s - loss: 0.3743 - accuracy: 0.8649
102/102 [==============================] - 0s 3ms/step - loss: 0.3741 - accuracy: 0.8650
## Epoch 16/100
##
1/102 [..............................] - ETA: 0s - loss: 0.3627 - accuracy: 0.8701
20/102 [====>.........................] - ETA: 0s - loss: 0.3627 - accuracy: 0.8712
38/102 [==========>...................] - ETA: 0s - loss: 0.3654 - accuracy: 0.8692
58/102 [================>.............] - ETA: 0s - loss: 0.3670 - accuracy: 0.8680
77/102 [=====================>........] - ETA: 0s - loss: 0.3677 - accuracy: 0.8673
95/102 [==========================>...] - ETA: 0s - loss: 0.3678 - accuracy: 0.8670
102/102 [==============================] - 0s 3ms/step - loss: 0.3679 - accuracy: 0.8668
## Epoch 17/100
##
1/102 [..............................] - ETA: 0s - loss: 0.3819 - accuracy: 0.8564
19/102 [====>.........................] - ETA: 0s - loss: 0.3675 - accuracy: 0.8672
39/102 [==========>...................] - ETA: 0s - loss: 0.3647 - accuracy: 0.8683
58/102 [================>.............] - ETA: 0s - loss: 0.3636 - accuracy: 0.8684
76/102 [=====================>........] - ETA: 0s - loss: 0.3628 - accuracy: 0.8685
96/102 [===========================>..] - ETA: 0s - loss: 0.3622 - accuracy: 0.8687
102/102 [==============================] - 0s 3ms/step - loss: 0.3621 - accuracy: 0.8687
## Epoch 18/100
##
1/102 [..............................] - ETA: 0s - loss: 0.3483 - accuracy: 0.8770
21/102 [=====>........................] - ETA: 0s - loss: 0.3528 - accuracy: 0.8756
39/102 [==========>...................] - ETA: 0s - loss: 0.3539 - accuracy: 0.8743
54/102 [==============>...............] - ETA: 0s - loss: 0.3551 - accuracy: 0.8731
72/102 [====================>.........] - ETA: 0s - loss: 0.3560 - accuracy: 0.8723
90/102 [=========================>....] - ETA: 0s - loss: 0.3568 - accuracy: 0.8716
102/102 [==============================] - 0s 3ms/step - loss: 0.3571 - accuracy: 0.8713
## Epoch 19/100
##
1/102 [..............................] - ETA: 0s - loss: 0.3747 - accuracy: 0.8447
19/102 [====>.........................] - ETA: 0s - loss: 0.3707 - accuracy: 0.8574
37/102 [=========>....................] - ETA: 0s - loss: 0.3721 - accuracy: 0.8579
55/102 [===============>..............] - ETA: 0s - loss: 0.3731 - accuracy: 0.8578
75/102 [=====================>........] - ETA: 0s - loss: 0.3735 - accuracy: 0.8578
93/102 [==========================>...] - ETA: 0s - loss: 0.3730 - accuracy: 0.8583
102/102 [==============================] - 0s 3ms/step - loss: 0.3727 - accuracy: 0.8586
## Epoch 20/100
##
1/102 [..............................] - ETA: 0s - loss: 0.3778 - accuracy: 0.8486
21/102 [=====>........................] - ETA: 0s - loss: 0.3628 - accuracy: 0.8641
39/102 [==========>...................] - ETA: 0s - loss: 0.3598 - accuracy: 0.8662
57/102 [===============>..............] - ETA: 0s - loss: 0.3582 - accuracy: 0.8672
77/102 [=====================>........] - ETA: 0s - loss: 0.3568 - accuracy: 0.8679
95/102 [==========================>...] - ETA: 0s - loss: 0.3559 - accuracy: 0.8684
102/102 [==============================] - 0s 3ms/step - loss: 0.3555 - accuracy: 0.8685
## Epoch 21/100
##
1/102 [..............................] - ETA: 0s - loss: 0.3747 - accuracy: 0.8545
19/102 [====>.........................] - ETA: 0s - loss: 0.3617 - accuracy: 0.8619
37/102 [=========>....................] - ETA: 0s - loss: 0.3563 - accuracy: 0.8656
56/102 [===============>..............] - ETA: 0s - loss: 0.3541 - accuracy: 0.8672
73/102 [====================>.........] - ETA: 0s - loss: 0.3528 - accuracy: 0.8681
91/102 [=========================>....] - ETA: 0s - loss: 0.3530 - accuracy: 0.8680
102/102 [==============================] - 0s 3ms/step - loss: 0.3534 - accuracy: 0.8677
## Epoch 22/100
##
1/102 [..............................] - ETA: 0s - loss: 0.3605 - accuracy: 0.8574
18/102 [====>.........................] - ETA: 0s - loss: 0.3579 - accuracy: 0.8646
38/102 [==========>...................] - ETA: 0s - loss: 0.3545 - accuracy: 0.8667
56/102 [===============>..............] - ETA: 0s - loss: 0.3529 - accuracy: 0.8676
74/102 [====================>.........] - ETA: 0s - loss: 0.3516 - accuracy: 0.8684
94/102 [==========================>...] - ETA: 0s - loss: 0.3504 - accuracy: 0.8692
102/102 [==============================] - 0s 3ms/step - loss: 0.3499 - accuracy: 0.8695
## Epoch 23/100
##
1/102 [..............................] - ETA: 0s - loss: 0.3300 - accuracy: 0.8721
21/102 [=====>........................] - ETA: 0s - loss: 0.3358 - accuracy: 0.8771
40/102 [==========>...................] - ETA: 0s - loss: 0.3390 - accuracy: 0.8752
58/102 [================>.............] - ETA: 0s - loss: 0.3405 - accuracy: 0.8744
77/102 [=====================>........] - ETA: 0s - loss: 0.3407 - accuracy: 0.8742
96/102 [===========================>..] - ETA: 0s - loss: 0.3406 - accuracy: 0.8743
102/102 [==============================] - 0s 3ms/step - loss: 0.3405 - accuracy: 0.8744
## Epoch 24/100
##
1/102 [..............................] - ETA: 0s - loss: 0.3273 - accuracy: 0.8779
20/102 [====>.........................] - ETA: 0s - loss: 0.3339 - accuracy: 0.8772
39/102 [==========>...................] - ETA: 0s - loss: 0.3359 - accuracy: 0.8761
59/102 [================>.............] - ETA: 0s - loss: 0.3361 - accuracy: 0.8760
79/102 [======================>.......] - ETA: 0s - loss: 0.3354 - accuracy: 0.8765
98/102 [===========================>..] - ETA: 0s - loss: 0.3346 - accuracy: 0.8769
102/102 [==============================] - 0s 3ms/step - loss: 0.3344 - accuracy: 0.8769
## Epoch 25/100
##
1/102 [..............................] - ETA: 0s - loss: 0.3896 - accuracy: 0.8389
19/102 [====>.........................] - ETA: 0s - loss: 0.3746 - accuracy: 0.8510
39/102 [==========>...................] - ETA: 0s - loss: 0.3772 - accuracy: 0.8501
58/102 [================>.............] - ETA: 0s - loss: 0.3795 - accuracy: 0.8489
76/102 [=====================>........] - ETA: 0s - loss: 0.3787 - accuracy: 0.8495
96/102 [===========================>..] - ETA: 0s - loss: 0.3768 - accuracy: 0.8508
102/102 [==============================] - 0s 3ms/step - loss: 0.3761 - accuracy: 0.8513
## Epoch 26/100
##
1/102 [..............................] - ETA: 0s - loss: 0.3133 - accuracy: 0.8896
20/102 [====>.........................] - ETA: 0s - loss: 0.3358 - accuracy: 0.8733
39/102 [==========>...................] - ETA: 0s - loss: 0.3379 - accuracy: 0.8729
58/102 [================>.............] - ETA: 0s - loss: 0.3383 - accuracy: 0.8729
78/102 [=====================>........] - ETA: 0s - loss: 0.3374 - accuracy: 0.8736
97/102 [===========================>..] - ETA: 0s - loss: 0.3364 - accuracy: 0.8743
102/102 [==============================] - 0s 3ms/step - loss: 0.3361 - accuracy: 0.8745
## Epoch 27/100
##
1/102 [..............................] - ETA: 0s - loss: 0.3139 - accuracy: 0.8887
20/102 [====>.........................] - ETA: 0s - loss: 0.3243 - accuracy: 0.8816
38/102 [==========>...................] - ETA: 0s - loss: 0.3259 - accuracy: 0.8802
58/102 [================>.............] - ETA: 0s - loss: 0.3271 - accuracy: 0.8793
77/102 [=====================>........] - ETA: 0s - loss: 0.3286 - accuracy: 0.8784
96/102 [===========================>..] - ETA: 0s - loss: 0.3292 - accuracy: 0.8779
102/102 [==============================] - 0s 3ms/step - loss: 0.3293 - accuracy: 0.8779
## Epoch 28/100
##
1/102 [..............................] - ETA: 0s - loss: 0.3024 - accuracy: 0.8887
19/102 [====>.........................] - ETA: 0s - loss: 0.3139 - accuracy: 0.8856
39/102 [==========>...................] - ETA: 0s - loss: 0.3150 - accuracy: 0.8853
58/102 [================>.............] - ETA: 0s - loss: 0.3190 - accuracy: 0.8829
77/102 [=====================>........] - ETA: 0s - loss: 0.3254 - accuracy: 0.8791
97/102 [===========================>..] - ETA: 0s - loss: 0.3302 - accuracy: 0.8764
102/102 [==============================] - 0s 3ms/step - loss: 0.3312 - accuracy: 0.8758
## Epoch 29/100
##
1/102 [..............................] - ETA: 0s - loss: 0.3351 - accuracy: 0.8721
21/102 [=====>........................] - ETA: 0s - loss: 0.3375 - accuracy: 0.8723
40/102 [==========>...................] - ETA: 0s - loss: 0.3350 - accuracy: 0.8735
58/102 [================>.............] - ETA: 0s - loss: 0.3349 - accuracy: 0.8736
78/102 [=====================>........] - ETA: 0s - loss: 0.3357 - accuracy: 0.8731
98/102 [===========================>..] - ETA: 0s - loss: 0.3353 - accuracy: 0.8732
102/102 [==============================] - 0s 3ms/step - loss: 0.3352 - accuracy: 0.8733
## Epoch 30/100
##
1/102 [..............................] - ETA: 0s - loss: 0.3404 - accuracy: 0.8779
19/102 [====>.........................] - ETA: 0s - loss: 0.3211 - accuracy: 0.8808
37/102 [=========>....................] - ETA: 0s - loss: 0.3344 - accuracy: 0.8727
57/102 [===============>..............] - ETA: 0s - loss: 0.3497 - accuracy: 0.8631
76/102 [=====================>........] - ETA: 0s - loss: 0.3588 - accuracy: 0.8577
95/102 [==========================>...] - ETA: 0s - loss: 0.3625 - accuracy: 0.8555
102/102 [==============================] - 0s 3ms/step - loss: 0.3631 - accuracy: 0.8551
## Epoch 31/100
##
1/102 [..............................] - ETA: 0s - loss: 0.3146 - accuracy: 0.8750
19/102 [====>.........................] - ETA: 0s - loss: 0.3339 - accuracy: 0.8743
39/102 [==========>...................] - ETA: 0s - loss: 0.3300 - accuracy: 0.8767
59/102 [================>.............] - ETA: 0s - loss: 0.3271 - accuracy: 0.8781
77/102 [=====================>........] - ETA: 0s - loss: 0.3252 - accuracy: 0.8790
96/102 [===========================>..] - ETA: 0s - loss: 0.3237 - accuracy: 0.8798
102/102 [==============================] - 0s 3ms/step - loss: 0.3232 - accuracy: 0.8800
## Epoch 32/100
##
1/102 [..............................] - ETA: 0s - loss: 0.3758 - accuracy: 0.8350
20/102 [====>.........................] - ETA: 0s - loss: 0.3357 - accuracy: 0.8683
40/102 [==========>...................] - ETA: 0s - loss: 0.3274 - accuracy: 0.8746
59/102 [================>.............] - ETA: 0s - loss: 0.3244 - accuracy: 0.8768
77/102 [=====================>........] - ETA: 0s - loss: 0.3225 - accuracy: 0.8782
97/102 [===========================>..] - ETA: 0s - loss: 0.3212 - accuracy: 0.8791
102/102 [==============================] - 0s 3ms/step - loss: 0.3208 - accuracy: 0.8793
## Epoch 33/100
##
1/102 [..............................] - ETA: 0s - loss: 0.3140 - accuracy: 0.8857
20/102 [====>.........................] - ETA: 0s - loss: 0.3041 - accuracy: 0.8893
38/102 [==========>...................] - ETA: 0s - loss: 0.3028 - accuracy: 0.8902
56/102 [===============>..............] - ETA: 0s - loss: 0.3027 - accuracy: 0.8900
77/102 [=====================>........] - ETA: 0s - loss: 0.3030 - accuracy: 0.8896
95/102 [==========================>...] - ETA: 0s - loss: 0.3032 - accuracy: 0.8893
102/102 [==============================] - 0s 3ms/step - loss: 0.3034 - accuracy: 0.8891
## Epoch 34/100
##
1/102 [..............................] - ETA: 0s - loss: 0.3266 - accuracy: 0.8711
19/102 [====>.........................] - ETA: 0s - loss: 0.3415 - accuracy: 0.8656
37/102 [=========>....................] - ETA: 0s - loss: 0.3405 - accuracy: 0.8672
56/102 [===============>..............] - ETA: 0s - loss: 0.3383 - accuracy: 0.8689
74/102 [====================>.........] - ETA: 0s - loss: 0.3358 - accuracy: 0.8704
93/102 [==========================>...] - ETA: 0s - loss: 0.3331 - accuracy: 0.8719
102/102 [==============================] - 0s 3ms/step - loss: 0.3317 - accuracy: 0.8726
## Epoch 35/100
##
1/102 [..............................] - ETA: 0s - loss: 0.2904 - accuracy: 0.8955
19/102 [====>.........................] - ETA: 0s - loss: 0.3010 - accuracy: 0.8883
40/102 [==========>...................] - ETA: 0s - loss: 0.3023 - accuracy: 0.8877
58/102 [================>.............] - ETA: 0s - loss: 0.3030 - accuracy: 0.8873
76/102 [=====================>........] - ETA: 0s - loss: 0.3029 - accuracy: 0.8874
96/102 [===========================>..] - ETA: 0s - loss: 0.3029 - accuracy: 0.8873
102/102 [==============================] - 0s 3ms/step - loss: 0.3031 - accuracy: 0.8872
## Epoch 36/100
##
1/102 [..............................] - ETA: 0s - loss: 0.3180 - accuracy: 0.8857
21/102 [=====>........................] - ETA: 0s - loss: 0.3194 - accuracy: 0.8782
40/102 [==========>...................] - ETA: 0s - loss: 0.3131 - accuracy: 0.8814
58/102 [================>.............] - ETA: 0s - loss: 0.3096 - accuracy: 0.8835
78/102 [=====================>........] - ETA: 0s - loss: 0.3079 - accuracy: 0.8844
97/102 [===========================>..] - ETA: 0s - loss: 0.3069 - accuracy: 0.8850
102/102 [==============================] - 0s 3ms/step - loss: 0.3067 - accuracy: 0.8851
## Epoch 37/100
##
1/102 [..............................] - ETA: 0s - loss: 0.3350 - accuracy: 0.8662
19/102 [====>.........................] - ETA: 0s - loss: 0.3062 - accuracy: 0.8846
37/102 [=========>....................] - ETA: 0s - loss: 0.3015 - accuracy: 0.8870
57/102 [===============>..............] - ETA: 0s - loss: 0.3000 - accuracy: 0.8879
75/102 [=====================>........] - ETA: 0s - loss: 0.2990 - accuracy: 0.8886
93/102 [==========================>...] - ETA: 0s - loss: 0.2980 - accuracy: 0.8892
102/102 [==============================] - 0s 3ms/step - loss: 0.2975 - accuracy: 0.8894
## Epoch 38/100
##
1/102 [..............................] - ETA: 0s - loss: 0.2721 - accuracy: 0.9072
19/102 [====>.........................] - ETA: 0s - loss: 0.2925 - accuracy: 0.8920
40/102 [==========>...................] - ETA: 0s - loss: 0.2894 - accuracy: 0.8933
58/102 [================>.............] - ETA: 0s - loss: 0.2911 - accuracy: 0.8923
77/102 [=====================>........] - ETA: 0s - loss: 0.2954 - accuracy: 0.8899
96/102 [===========================>..] - ETA: 0s - loss: 0.2982 - accuracy: 0.8884
102/102 [==============================] - 0s 3ms/step - loss: 0.2988 - accuracy: 0.8881
## Epoch 39/100
##
1/102 [..............................] - ETA: 0s - loss: 0.2813 - accuracy: 0.8936
21/102 [=====>........................] - ETA: 0s - loss: 0.2831 - accuracy: 0.8957
41/102 [===========>..................] - ETA: 0s - loss: 0.2843 - accuracy: 0.8951
59/102 [================>.............] - ETA: 0s - loss: 0.2852 - accuracy: 0.8946
78/102 [=====================>........] - ETA: 0s - loss: 0.2860 - accuracy: 0.8942
99/102 [============================>.] - ETA: 0s - loss: 0.2864 - accuracy: 0.8940
102/102 [==============================] - 0s 3ms/step - loss: 0.2864 - accuracy: 0.8940
## Epoch 40/100
##
1/102 [..............................] - ETA: 0s - loss: 0.2997 - accuracy: 0.8965
20/102 [====>.........................] - ETA: 0s - loss: 0.2942 - accuracy: 0.8921
39/102 [==========>...................] - ETA: 0s - loss: 0.2961 - accuracy: 0.8904
59/102 [================>.............] - ETA: 0s - loss: 0.2951 - accuracy: 0.8906
78/102 [=====================>........] - ETA: 0s - loss: 0.2938 - accuracy: 0.8911
96/102 [===========================>..] - ETA: 0s - loss: 0.2925 - accuracy: 0.8916
102/102 [==============================] - 0s 3ms/step - loss: 0.2920 - accuracy: 0.8918
## Epoch 41/100
##
1/102 [..............................] - ETA: 0s - loss: 0.3374 - accuracy: 0.8721
20/102 [====>.........................] - ETA: 0s - loss: 0.2999 - accuracy: 0.8864
39/102 [==========>...................] - ETA: 0s - loss: 0.2966 - accuracy: 0.8881
58/102 [================>.............] - ETA: 0s - loss: 0.2968 - accuracy: 0.8880
76/102 [=====================>........] - ETA: 0s - loss: 0.2966 - accuracy: 0.8881
95/102 [==========================>...] - ETA: 0s - loss: 0.2960 - accuracy: 0.8884
102/102 [==============================] - 0s 3ms/step - loss: 0.2956 - accuracy: 0.8886
## Epoch 42/100
##
1/102 [..............................] - ETA: 0s - loss: 0.2940 - accuracy: 0.8936
20/102 [====>.........................] - ETA: 0s - loss: 0.2770 - accuracy: 0.8981
40/102 [==========>...................] - ETA: 0s - loss: 0.2762 - accuracy: 0.8988
58/102 [================>.............] - ETA: 0s - loss: 0.2767 - accuracy: 0.8985
77/102 [=====================>........] - ETA: 0s - loss: 0.2782 - accuracy: 0.8977
97/102 [===========================>..] - ETA: 0s - loss: 0.2811 - accuracy: 0.8962
102/102 [==============================] - 0s 3ms/step - loss: 0.2822 - accuracy: 0.8956
## Epoch 43/100
##
1/102 [..............................] - ETA: 0s - loss: 0.2992 - accuracy: 0.8896
20/102 [====>.........................] - ETA: 0s - loss: 0.3102 - accuracy: 0.8792
39/102 [==========>...................] - ETA: 0s - loss: 0.3047 - accuracy: 0.8821
58/102 [================>.............] - ETA: 0s - loss: 0.3021 - accuracy: 0.8836
78/102 [=====================>........] - ETA: 0s - loss: 0.2998 - accuracy: 0.8851
96/102 [===========================>..] - ETA: 0s - loss: 0.2978 - accuracy: 0.8863
102/102 [==============================] - 0s 3ms/step - loss: 0.2972 - accuracy: 0.8867
## Epoch 44/100
##
1/102 [..............................] - ETA: 0s - loss: 0.2683 - accuracy: 0.9014
20/102 [====>.........................] - ETA: 0s - loss: 0.2960 - accuracy: 0.8874
39/102 [==========>...................] - ETA: 0s - loss: 0.2890 - accuracy: 0.8912
59/102 [================>.............] - ETA: 0s - loss: 0.2855 - accuracy: 0.8928
78/102 [=====================>........] - ETA: 0s - loss: 0.2834 - accuracy: 0.8938
97/102 [===========================>..] - ETA: 0s - loss: 0.2819 - accuracy: 0.8946
102/102 [==============================] - 0s 3ms/step - loss: 0.2815 - accuracy: 0.8947
## Epoch 45/100
##
1/102 [..............................] - ETA: 0s - loss: 0.2351 - accuracy: 0.9189
20/102 [====>.........................] - ETA: 0s - loss: 0.2627 - accuracy: 0.9039
40/102 [==========>...................] - ETA: 0s - loss: 0.2682 - accuracy: 0.9017
59/102 [================>.............] - ETA: 0s - loss: 0.2743 - accuracy: 0.8984
78/102 [=====================>........] - ETA: 0s - loss: 0.2779 - accuracy: 0.8964
98/102 [===========================>..] - ETA: 0s - loss: 0.2796 - accuracy: 0.8955
102/102 [==============================] - 0s 3ms/step - loss: 0.2799 - accuracy: 0.8953
## Epoch 46/100
##
1/102 [..............................] - ETA: 0s - loss: 0.2931 - accuracy: 0.8926
20/102 [====>.........................] - ETA: 0s - loss: 0.2864 - accuracy: 0.8928
38/102 [==========>...................] - ETA: 0s - loss: 0.2890 - accuracy: 0.8904
58/102 [================>.............] - ETA: 0s - loss: 0.2890 - accuracy: 0.8903
78/102 [=====================>........] - ETA: 0s - loss: 0.2877 - accuracy: 0.8909
97/102 [===========================>..] - ETA: 0s - loss: 0.2863 - accuracy: 0.8917
102/102 [==============================] - 0s 3ms/step - loss: 0.2859 - accuracy: 0.8919
## Epoch 47/100
##
1/102 [..............................] - ETA: 0s - loss: 0.3213 - accuracy: 0.8721
19/102 [====>.........................] - ETA: 0s - loss: 0.3031 - accuracy: 0.8833
38/102 [==========>...................] - ETA: 0s - loss: 0.2937 - accuracy: 0.8885
57/102 [===============>..............] - ETA: 0s - loss: 0.2882 - accuracy: 0.8914
76/102 [=====================>........] - ETA: 0s - loss: 0.2841 - accuracy: 0.8934
95/102 [==========================>...] - ETA: 0s - loss: 0.2817 - accuracy: 0.8946
102/102 [==============================] - 0s 3ms/step - loss: 0.2809 - accuracy: 0.8950
## Epoch 48/100
##
1/102 [..............................] - ETA: 0s - loss: 0.2705 - accuracy: 0.8965
20/102 [====>.........................] - ETA: 0s - loss: 0.2728 - accuracy: 0.8987
39/102 [==========>...................] - ETA: 0s - loss: 0.2711 - accuracy: 0.8992
57/102 [===============>..............] - ETA: 0s - loss: 0.2708 - accuracy: 0.8993
76/102 [=====================>........] - ETA: 0s - loss: 0.2729 - accuracy: 0.8982
96/102 [===========================>..] - ETA: 0s - loss: 0.2741 - accuracy: 0.8975
102/102 [==============================] - 0s 3ms/step - loss: 0.2744 - accuracy: 0.8973
## Epoch 49/100
##
1/102 [..............................] - ETA: 0s - loss: 0.2932 - accuracy: 0.8926
21/102 [=====>........................] - ETA: 0s - loss: 0.2762 - accuracy: 0.8971
39/102 [==========>...................] - ETA: 0s - loss: 0.2715 - accuracy: 0.8991
58/102 [================>.............] - ETA: 0s - loss: 0.2694 - accuracy: 0.9000
78/102 [=====================>........] - ETA: 0s - loss: 0.2685 - accuracy: 0.9003
97/102 [===========================>..] - ETA: 0s - loss: 0.2682 - accuracy: 0.9004
102/102 [==============================] - 0s 3ms/step - loss: 0.2681 - accuracy: 0.9005
## Epoch 50/100
##
1/102 [..............................] - ETA: 0s - loss: 0.3416 - accuracy: 0.8652
19/102 [====>.........................] - ETA: 0s - loss: 0.3039 - accuracy: 0.8812
38/102 [==========>...................] - ETA: 0s - loss: 0.2986 - accuracy: 0.8832
58/102 [================>.............] - ETA: 0s - loss: 0.2939 - accuracy: 0.8854
77/102 [=====================>........] - ETA: 0s - loss: 0.2907 - accuracy: 0.8870
96/102 [===========================>..] - ETA: 0s - loss: 0.2884 - accuracy: 0.8882
102/102 [==============================] - 0s 3ms/step - loss: 0.2878 - accuracy: 0.8885
## Epoch 51/100
##
1/102 [..............................] - ETA: 0s - loss: 0.3238 - accuracy: 0.8721
20/102 [====>.........................] - ETA: 0s - loss: 0.2815 - accuracy: 0.8915
41/102 [===========>..................] - ETA: 0s - loss: 0.2746 - accuracy: 0.8955
59/102 [================>.............] - ETA: 0s - loss: 0.2722 - accuracy: 0.8969
77/102 [=====================>........] - ETA: 0s - loss: 0.2704 - accuracy: 0.8979
98/102 [===========================>..] - ETA: 0s - loss: 0.2688 - accuracy: 0.8988
102/102 [==============================] - 0s 3ms/step - loss: 0.2685 - accuracy: 0.8989
## Epoch 52/100
##
1/102 [..............................] - ETA: 0s - loss: 0.3163 - accuracy: 0.8672
21/102 [=====>........................] - ETA: 0s - loss: 0.2907 - accuracy: 0.8895
39/102 [==========>...................] - ETA: 0s - loss: 0.2810 - accuracy: 0.8940
58/102 [================>.............] - ETA: 0s - loss: 0.2762 - accuracy: 0.8963
75/102 [=====================>........] - ETA: 0s - loss: 0.2729 - accuracy: 0.8979
92/102 [==========================>...] - ETA: 0s - loss: 0.2708 - accuracy: 0.8989
102/102 [==============================] - 0s 3ms/step - loss: 0.2697 - accuracy: 0.8994
## Epoch 53/100
##
1/102 [..............................] - ETA: 0s - loss: 0.2643 - accuracy: 0.9072
20/102 [====>.........................] - ETA: 0s - loss: 0.2534 - accuracy: 0.9072
38/102 [==========>...................] - ETA: 0s - loss: 0.2520 - accuracy: 0.9077
58/102 [================>.............] - ETA: 0s - loss: 0.2518 - accuracy: 0.9078
77/102 [=====================>........] - ETA: 0s - loss: 0.2521 - accuracy: 0.9077
96/102 [===========================>..] - ETA: 0s - loss: 0.2527 - accuracy: 0.9073
102/102 [==============================] - 0s 3ms/step - loss: 0.2529 - accuracy: 0.9072
## Epoch 54/100
##
1/102 [..............................] - ETA: 0s - loss: 0.2551 - accuracy: 0.8984
20/102 [====>.........................] - ETA: 0s - loss: 0.2713 - accuracy: 0.8958
40/102 [==========>...................] - ETA: 0s - loss: 0.2732 - accuracy: 0.8952
59/102 [================>.............] - ETA: 0s - loss: 0.2729 - accuracy: 0.8957
77/102 [=====================>........] - ETA: 0s - loss: 0.2728 - accuracy: 0.8959
97/102 [===========================>..] - ETA: 0s - loss: 0.2731 - accuracy: 0.8960
102/102 [==============================] - 0s 3ms/step - loss: 0.2732 - accuracy: 0.8960
## Epoch 55/100
##
1/102 [..............................] - ETA: 0s - loss: 0.3738 - accuracy: 0.8428
22/102 [=====>........................] - ETA: 0s - loss: 0.3064 - accuracy: 0.8777
42/102 [===========>..................] - ETA: 0s - loss: 0.2951 - accuracy: 0.8840
61/102 [================>.............] - ETA: 0s - loss: 0.2883 - accuracy: 0.8878
81/102 [======================>.......] - ETA: 0s - loss: 0.2831 - accuracy: 0.8907
100/102 [============================>.] - ETA: 0s - loss: 0.2794 - accuracy: 0.8927
102/102 [==============================] - 0s 3ms/step - loss: 0.2789 - accuracy: 0.8930
## Epoch 56/100
##
1/102 [..............................] - ETA: 0s - loss: 0.2480 - accuracy: 0.9043
19/102 [====>.........................] - ETA: 0s - loss: 0.2526 - accuracy: 0.9044
39/102 [==========>...................] - ETA: 0s - loss: 0.2537 - accuracy: 0.9046
60/102 [================>.............] - ETA: 0s - loss: 0.2527 - accuracy: 0.9056
78/102 [=====================>........] - ETA: 0s - loss: 0.2517 - accuracy: 0.9063
97/102 [===========================>..] - ETA: 0s - loss: 0.2510 - accuracy: 0.9067
102/102 [==============================] - 0s 3ms/step - loss: 0.2509 - accuracy: 0.9068
## Epoch 57/100
##
1/102 [..............................] - ETA: 0s - loss: 0.2699 - accuracy: 0.9131
19/102 [====>.........................] - ETA: 0s - loss: 0.2607 - accuracy: 0.9046
38/102 [==========>...................] - ETA: 0s - loss: 0.2566 - accuracy: 0.9056
56/102 [===============>..............] - ETA: 0s - loss: 0.2561 - accuracy: 0.9054
74/102 [====================>.........] - ETA: 0s - loss: 0.2569 - accuracy: 0.9047
95/102 [==========================>...] - ETA: 0s - loss: 0.2572 - accuracy: 0.9043
102/102 [==============================] - 0s 3ms/step - loss: 0.2572 - accuracy: 0.9043
## Epoch 58/100
##
1/102 [..............................] - ETA: 0s - loss: 0.2465 - accuracy: 0.9111
21/102 [=====>........................] - ETA: 0s - loss: 0.2571 - accuracy: 0.9040
40/102 [==========>...................] - ETA: 0s - loss: 0.2611 - accuracy: 0.9015
59/102 [================>.............] - ETA: 0s - loss: 0.2628 - accuracy: 0.9006
79/102 [======================>.......] - ETA: 0s - loss: 0.2632 - accuracy: 0.9004
98/102 [===========================>..] - ETA: 0s - loss: 0.2627 - accuracy: 0.9006
102/102 [==============================] - 0s 3ms/step - loss: 0.2625 - accuracy: 0.9007
## Epoch 59/100
##
1/102 [..............................] - ETA: 0s - loss: 0.2180 - accuracy: 0.9287
20/102 [====>.........................] - ETA: 0s - loss: 0.2520 - accuracy: 0.9074
38/102 [==========>...................] - ETA: 0s - loss: 0.2531 - accuracy: 0.9066
57/102 [===============>..............] - ETA: 0s - loss: 0.2537 - accuracy: 0.9061
76/102 [=====================>........] - ETA: 0s - loss: 0.2552 - accuracy: 0.9052
94/102 [==========================>...] - ETA: 0s - loss: 0.2560 - accuracy: 0.9047
102/102 [==============================] - 0s 3ms/step - loss: 0.2562 - accuracy: 0.9045
## Epoch 60/100
##
1/102 [..............................] - ETA: 0s - loss: 0.2431 - accuracy: 0.9082
19/102 [====>.........................] - ETA: 0s - loss: 0.2475 - accuracy: 0.9083
39/102 [==========>...................] - ETA: 0s - loss: 0.2518 - accuracy: 0.9060
58/102 [================>.............] - ETA: 0s - loss: 0.2549 - accuracy: 0.9047
76/102 [=====================>........] - ETA: 0s - loss: 0.2563 - accuracy: 0.9042
95/102 [==========================>...] - ETA: 0s - loss: 0.2564 - accuracy: 0.9042
102/102 [==============================] - 0s 3ms/step - loss: 0.2563 - accuracy: 0.9042
## Epoch 61/100
##
1/102 [..............................] - ETA: 0s - loss: 0.2437 - accuracy: 0.9160
20/102 [====>.........................] - ETA: 0s - loss: 0.2387 - accuracy: 0.9131
40/102 [==========>...................] - ETA: 0s - loss: 0.2410 - accuracy: 0.9116
59/102 [================>.............] - ETA: 0s - loss: 0.2415 - accuracy: 0.9112
79/102 [======================>.......] - ETA: 0s - loss: 0.2424 - accuracy: 0.9107
99/102 [============================>.] - ETA: 0s - loss: 0.2438 - accuracy: 0.9100
102/102 [==============================] - 0s 3ms/step - loss: 0.2440 - accuracy: 0.9099
## Epoch 62/100
##
1/102 [..............................] - ETA: 0s - loss: 0.3460 - accuracy: 0.8623
21/102 [=====>........................] - ETA: 0s - loss: 0.3238 - accuracy: 0.8745
39/102 [==========>...................] - ETA: 0s - loss: 0.3025 - accuracy: 0.8835
59/102 [================>.............] - ETA: 0s - loss: 0.2905 - accuracy: 0.8887
78/102 [=====================>........] - ETA: 0s - loss: 0.2834 - accuracy: 0.8918
97/102 [===========================>..] - ETA: 0s - loss: 0.2780 - accuracy: 0.8943
102/102 [==============================] - 0s 3ms/step - loss: 0.2766 - accuracy: 0.8949
## Epoch 63/100
##
1/102 [..............................] - ETA: 0s - loss: 0.2336 - accuracy: 0.9111
19/102 [====>.........................] - ETA: 0s - loss: 0.2507 - accuracy: 0.9078
39/102 [==========>...................] - ETA: 0s - loss: 0.2490 - accuracy: 0.9076
57/102 [===============>..............] - ETA: 0s - loss: 0.2470 - accuracy: 0.9084
75/102 [=====================>........] - ETA: 0s - loss: 0.2455 - accuracy: 0.9089
95/102 [==========================>...] - ETA: 0s - loss: 0.2448 - accuracy: 0.9091
102/102 [==============================] - 0s 3ms/step - loss: 0.2447 - accuracy: 0.9092
## Epoch 64/100
##
1/102 [..............................] - ETA: 0s - loss: 0.2456 - accuracy: 0.9062
20/102 [====>.........................] - ETA: 0s - loss: 0.2508 - accuracy: 0.9053
39/102 [==========>...................] - ETA: 0s - loss: 0.2555 - accuracy: 0.9032
57/102 [===============>..............] - ETA: 0s - loss: 0.2566 - accuracy: 0.9026
77/102 [=====================>........] - ETA: 0s - loss: 0.2563 - accuracy: 0.9026
96/102 [===========================>..] - ETA: 0s - loss: 0.2560 - accuracy: 0.9028
102/102 [==============================] - 0s 3ms/step - loss: 0.2557 - accuracy: 0.9030
## Epoch 65/100
##
1/102 [..............................] - ETA: 0s - loss: 0.2332 - accuracy: 0.9111
20/102 [====>.........................] - ETA: 0s - loss: 0.2293 - accuracy: 0.9142
38/102 [==========>...................] - ETA: 0s - loss: 0.2330 - accuracy: 0.9128
57/102 [===============>..............] - ETA: 0s - loss: 0.2366 - accuracy: 0.9113
76/102 [=====================>........] - ETA: 0s - loss: 0.2388 - accuracy: 0.9105
94/102 [==========================>...] - ETA: 0s - loss: 0.2397 - accuracy: 0.9102
102/102 [==============================] - 0s 3ms/step - loss: 0.2399 - accuracy: 0.9102
## Epoch 66/100
##
1/102 [..............................] - ETA: 0s - loss: 0.2563 - accuracy: 0.9102
19/102 [====>.........................] - ETA: 0s - loss: 0.2578 - accuracy: 0.9034
39/102 [==========>...................] - ETA: 0s - loss: 0.2515 - accuracy: 0.9064
58/102 [================>.............] - ETA: 0s - loss: 0.2479 - accuracy: 0.9080
76/102 [=====================>........] - ETA: 0s - loss: 0.2456 - accuracy: 0.9091
95/102 [==========================>...] - ETA: 0s - loss: 0.2438 - accuracy: 0.9099
102/102 [==============================] - 0s 3ms/step - loss: 0.2432 - accuracy: 0.9101
## Epoch 67/100
##
1/102 [..............................] - ETA: 0s - loss: 0.2255 - accuracy: 0.9268
20/102 [====>.........................] - ETA: 0s - loss: 0.2381 - accuracy: 0.9149
39/102 [==========>...................] - ETA: 0s - loss: 0.2380 - accuracy: 0.9136
57/102 [===============>..............] - ETA: 0s - loss: 0.2371 - accuracy: 0.9135
76/102 [=====================>........] - ETA: 0s - loss: 0.2370 - accuracy: 0.9132
96/102 [===========================>..] - ETA: 0s - loss: 0.2370 - accuracy: 0.9131
102/102 [==============================] - 0s 3ms/step - loss: 0.2369 - accuracy: 0.9131
## Epoch 68/100
##
1/102 [..............................] - ETA: 0s - loss: 0.2715 - accuracy: 0.8906
21/102 [=====>........................] - ETA: 0s - loss: 0.2538 - accuracy: 0.9039
39/102 [==========>...................] - ETA: 0s - loss: 0.2511 - accuracy: 0.9054
57/102 [===============>..............] - ETA: 0s - loss: 0.2481 - accuracy: 0.9070
78/102 [=====================>........] - ETA: 0s - loss: 0.2455 - accuracy: 0.9083
96/102 [===========================>..] - ETA: 0s - loss: 0.2439 - accuracy: 0.9089
102/102 [==============================] - 0s 3ms/step - loss: 0.2435 - accuracy: 0.9091
## Epoch 69/100
##
1/102 [..............................] - ETA: 0s - loss: 0.2203 - accuracy: 0.9199
19/102 [====>.........................] - ETA: 0s - loss: 0.2396 - accuracy: 0.9092
37/102 [=========>....................] - ETA: 0s - loss: 0.2395 - accuracy: 0.9098
57/102 [===============>..............] - ETA: 0s - loss: 0.2382 - accuracy: 0.9107
76/102 [=====================>........] - ETA: 0s - loss: 0.2372 - accuracy: 0.9114
95/102 [==========================>...] - ETA: 0s - loss: 0.2364 - accuracy: 0.9118
102/102 [==============================] - 0s 3ms/step - loss: 0.2361 - accuracy: 0.9120
## Epoch 70/100
##
1/102 [..............................] - ETA: 0s - loss: 0.2423 - accuracy: 0.9150
19/102 [====>.........................] - ETA: 0s - loss: 0.2305 - accuracy: 0.9163
39/102 [==========>...................] - ETA: 0s - loss: 0.2300 - accuracy: 0.9157
57/102 [===============>..............] - ETA: 0s - loss: 0.2319 - accuracy: 0.9146
75/102 [=====================>........] - ETA: 0s - loss: 0.2327 - accuracy: 0.9140
95/102 [==========================>...] - ETA: 0s - loss: 0.2331 - accuracy: 0.9137
102/102 [==============================] - 0s 3ms/step - loss: 0.2332 - accuracy: 0.9136
## Epoch 71/100
##
1/102 [..............................] - ETA: 0s - loss: 0.2164 - accuracy: 0.9180
21/102 [=====>........................] - ETA: 0s - loss: 0.2244 - accuracy: 0.9159
40/102 [==========>...................] - ETA: 0s - loss: 0.2267 - accuracy: 0.9148
58/102 [================>.............] - ETA: 0s - loss: 0.2270 - accuracy: 0.9148
78/102 [=====================>........] - ETA: 0s - loss: 0.2269 - accuracy: 0.9149
98/102 [===========================>..] - ETA: 0s - loss: 0.2270 - accuracy: 0.9150
102/102 [==============================] - 0s 3ms/step - loss: 0.2272 - accuracy: 0.9149
## Epoch 72/100
##
1/102 [..............................] - ETA: 0s - loss: 0.2691 - accuracy: 0.8975
20/102 [====>.........................] - ETA: 0s - loss: 0.2441 - accuracy: 0.9083
38/102 [==========>...................] - ETA: 0s - loss: 0.2392 - accuracy: 0.9106
58/102 [================>.............] - ETA: 0s - loss: 0.2352 - accuracy: 0.9124
77/102 [=====================>........] - ETA: 0s - loss: 0.2328 - accuracy: 0.9134
96/102 [===========================>..] - ETA: 0s - loss: 0.2315 - accuracy: 0.9139
102/102 [==============================] - 0s 3ms/step - loss: 0.2312 - accuracy: 0.9140
## Epoch 73/100
##
1/102 [..............................] - ETA: 0s - loss: 0.3051 - accuracy: 0.8779
20/102 [====>.........................] - ETA: 0s - loss: 0.2797 - accuracy: 0.8889
40/102 [==========>...................] - ETA: 0s - loss: 0.2756 - accuracy: 0.8905
59/102 [================>.............] - ETA: 0s - loss: 0.2710 - accuracy: 0.8927
77/102 [=====================>........] - ETA: 0s - loss: 0.2669 - accuracy: 0.8947
97/102 [===========================>..] - ETA: 0s - loss: 0.2631 - accuracy: 0.8966
102/102 [==============================] - 0s 3ms/step - loss: 0.2620 - accuracy: 0.8971
## Epoch 74/100
##
1/102 [..............................] - ETA: 0s - loss: 0.2041 - accuracy: 0.9268
21/102 [=====>........................] - ETA: 0s - loss: 0.2289 - accuracy: 0.9115
40/102 [==========>...................] - ETA: 0s - loss: 0.2315 - accuracy: 0.9100
59/102 [================>.............] - ETA: 0s - loss: 0.2320 - accuracy: 0.9098
79/102 [======================>.......] - ETA: 0s - loss: 0.2326 - accuracy: 0.9096
98/102 [===========================>..] - ETA: 0s - loss: 0.2330 - accuracy: 0.9095
102/102 [==============================] - 0s 3ms/step - loss: 0.2331 - accuracy: 0.9095
## Epoch 75/100
##
1/102 [..............................] - ETA: 0s - loss: 0.2470 - accuracy: 0.9082
20/102 [====>.........................] - ETA: 0s - loss: 0.2579 - accuracy: 0.8997
38/102 [==========>...................] - ETA: 0s - loss: 0.2532 - accuracy: 0.9017
57/102 [===============>..............] - ETA: 0s - loss: 0.2481 - accuracy: 0.9040
76/102 [=====================>........] - ETA: 0s - loss: 0.2449 - accuracy: 0.9054
95/102 [==========================>...] - ETA: 0s - loss: 0.2432 - accuracy: 0.9061
102/102 [==============================] - 0s 3ms/step - loss: 0.2431 - accuracy: 0.9061
## Epoch 76/100
##
1/102 [..............................] - ETA: 0s - loss: 0.2561 - accuracy: 0.9014
19/102 [====>.........................] - ETA: 0s - loss: 0.2479 - accuracy: 0.9052
38/102 [==========>...................] - ETA: 0s - loss: 0.2433 - accuracy: 0.9073
56/102 [===============>..............] - ETA: 0s - loss: 0.2407 - accuracy: 0.9083
74/102 [====================>.........] - ETA: 0s - loss: 0.2389 - accuracy: 0.9089
94/102 [==========================>...] - ETA: 0s - loss: 0.2370 - accuracy: 0.9097
102/102 [==============================] - 0s 3ms/step - loss: 0.2363 - accuracy: 0.9099
## Epoch 77/100
##
1/102 [..............................] - ETA: 0s - loss: 0.2255 - accuracy: 0.9082
20/102 [====>.........................] - ETA: 0s - loss: 0.2351 - accuracy: 0.9098
40/102 [==========>...................] - ETA: 0s - loss: 0.2328 - accuracy: 0.9115
58/102 [================>.............] - ETA: 0s - loss: 0.2323 - accuracy: 0.9118
76/102 [=====================>........] - ETA: 0s - loss: 0.2317 - accuracy: 0.9120
96/102 [===========================>..] - ETA: 0s - loss: 0.2306 - accuracy: 0.9123
102/102 [==============================] - 0s 3ms/step - loss: 0.2302 - accuracy: 0.9124
## Epoch 78/100
##
1/102 [..............................] - ETA: 0s - loss: 0.2063 - accuracy: 0.9268
21/102 [=====>........................] - ETA: 0s - loss: 0.2144 - accuracy: 0.9192
39/102 [==========>...................] - ETA: 0s - loss: 0.2167 - accuracy: 0.9173
59/102 [================>.............] - ETA: 0s - loss: 0.2187 - accuracy: 0.9161
77/102 [=====================>........] - ETA: 0s - loss: 0.2190 - accuracy: 0.9159
96/102 [===========================>..] - ETA: 0s - loss: 0.2189 - accuracy: 0.9160
102/102 [==============================] - 0s 3ms/step - loss: 0.2189 - accuracy: 0.9160
## Epoch 79/100
##
1/102 [..............................] - ETA: 0s - loss: 0.2092 - accuracy: 0.9189
19/102 [====>.........................] - ETA: 0s - loss: 0.2072 - accuracy: 0.9204
37/102 [=========>....................] - ETA: 0s - loss: 0.2082 - accuracy: 0.9204
57/102 [===============>..............] - ETA: 0s - loss: 0.2085 - accuracy: 0.9205
75/102 [=====================>........] - ETA: 0s - loss: 0.2083 - accuracy: 0.9207
93/102 [==========================>...] - ETA: 0s - loss: 0.2080 - accuracy: 0.9208
102/102 [==============================] - 0s 3ms/step - loss: 0.2079 - accuracy: 0.9209
## Epoch 80/100
##
1/102 [..............................] - ETA: 0s - loss: 0.2008 - accuracy: 0.9238
20/102 [====>.........................] - ETA: 0s - loss: 0.2129 - accuracy: 0.9187
39/102 [==========>...................] - ETA: 0s - loss: 0.2133 - accuracy: 0.9184
58/102 [================>.............] - ETA: 0s - loss: 0.2181 - accuracy: 0.9160
76/102 [=====================>........] - ETA: 0s - loss: 0.2206 - accuracy: 0.9147
96/102 [===========================>..] - ETA: 0s - loss: 0.2212 - accuracy: 0.9144
102/102 [==============================] - 0s 3ms/step - loss: 0.2212 - accuracy: 0.9144
## Epoch 81/100
##
1/102 [..............................] - ETA: 0s - loss: 0.2101 - accuracy: 0.9160
21/102 [=====>........................] - ETA: 0s - loss: 0.2130 - accuracy: 0.9197
40/102 [==========>...................] - ETA: 0s - loss: 0.2111 - accuracy: 0.9204
59/102 [================>.............] - ETA: 0s - loss: 0.2129 - accuracy: 0.9192
79/102 [======================>.......] - ETA: 0s - loss: 0.2152 - accuracy: 0.9178
98/102 [===========================>..] - ETA: 0s - loss: 0.2159 - accuracy: 0.9173
102/102 [==============================] - 0s 3ms/step - loss: 0.2159 - accuracy: 0.9172
## Epoch 82/100
##
1/102 [..............................] - ETA: 0s - loss: 0.2737 - accuracy: 0.8896
19/102 [====>.........................] - ETA: 0s - loss: 0.2292 - accuracy: 0.9113
38/102 [==========>...................] - ETA: 0s - loss: 0.2202 - accuracy: 0.9146
58/102 [================>.............] - ETA: 0s - loss: 0.2174 - accuracy: 0.9157
77/102 [=====================>........] - ETA: 0s - loss: 0.2158 - accuracy: 0.9164
95/102 [==========================>...] - ETA: 0s - loss: 0.2148 - accuracy: 0.9169
102/102 [==============================] - 0s 3ms/step - loss: 0.2145 - accuracy: 0.9170
## Epoch 83/100
##
1/102 [..............................] - ETA: 0s - loss: 0.1945 - accuracy: 0.9209
19/102 [====>.........................] - ETA: 0s - loss: 0.1950 - accuracy: 0.9243
39/102 [==========>...................] - ETA: 0s - loss: 0.1989 - accuracy: 0.9231
58/102 [================>.............] - ETA: 0s - loss: 0.2005 - accuracy: 0.9226
76/102 [=====================>........] - ETA: 0s - loss: 0.2008 - accuracy: 0.9226
97/102 [===========================>..] - ETA: 0s - loss: 0.2010 - accuracy: 0.9226
102/102 [==============================] - 0s 3ms/step - loss: 0.2010 - accuracy: 0.9226
## Epoch 84/100
##
1/102 [..............................] - ETA: 0s - loss: 0.1780 - accuracy: 0.9316
20/102 [====>.........................] - ETA: 0s - loss: 0.1974 - accuracy: 0.9272
38/102 [==========>...................] - ETA: 0s - loss: 0.2038 - accuracy: 0.9242
57/102 [===============>..............] - ETA: 0s - loss: 0.2072 - accuracy: 0.9221
76/102 [=====================>........] - ETA: 0s - loss: 0.2078 - accuracy: 0.9215
95/102 [==========================>...] - ETA: 0s - loss: 0.2085 - accuracy: 0.9209
102/102 [==============================] - 0s 3ms/step - loss: 0.2088 - accuracy: 0.9207
## Epoch 85/100
##
1/102 [..............................] - ETA: 0s - loss: 0.2044 - accuracy: 0.9219
20/102 [====>.........................] - ETA: 0s - loss: 0.2037 - accuracy: 0.9246
38/102 [==========>...................] - ETA: 0s - loss: 0.2025 - accuracy: 0.9245
57/102 [===============>..............] - ETA: 0s - loss: 0.2009 - accuracy: 0.9248
76/102 [=====================>........] - ETA: 0s - loss: 0.2006 - accuracy: 0.9246
94/102 [==========================>...] - ETA: 0s - loss: 0.2004 - accuracy: 0.9246
102/102 [==============================] - 0s 3ms/step - loss: 0.2002 - accuracy: 0.9246
## Epoch 86/100
##
1/102 [..............................] - ETA: 0s - loss: 0.2300 - accuracy: 0.9033
19/102 [====>.........................] - ETA: 0s - loss: 0.2064 - accuracy: 0.9200
39/102 [==========>...................] - ETA: 0s - loss: 0.2016 - accuracy: 0.9220
59/102 [================>.............] - ETA: 0s - loss: 0.2010 - accuracy: 0.9222
77/102 [=====================>........] - ETA: 0s - loss: 0.2003 - accuracy: 0.9226
96/102 [===========================>..] - ETA: 0s - loss: 0.1993 - accuracy: 0.9231
102/102 [==============================] - 0s 3ms/step - loss: 0.1989 - accuracy: 0.9233
## Epoch 87/100
##
1/102 [..............................] - ETA: 0s - loss: 0.1750 - accuracy: 0.9434
19/102 [====>.........................] - ETA: 0s - loss: 0.1806 - accuracy: 0.9333
39/102 [==========>...................] - ETA: 0s - loss: 0.1838 - accuracy: 0.9314
57/102 [===============>..............] - ETA: 0s - loss: 0.1859 - accuracy: 0.9304
75/102 [=====================>........] - ETA: 0s - loss: 0.1868 - accuracy: 0.9298
96/102 [===========================>..] - ETA: 0s - loss: 0.1875 - accuracy: 0.9294
102/102 [==============================] - 0s 3ms/step - loss: 0.1877 - accuracy: 0.9292
## Epoch 88/100
##
1/102 [..............................] - ETA: 0s - loss: 0.2157 - accuracy: 0.9199
21/102 [=====>........................] - ETA: 0s - loss: 0.1913 - accuracy: 0.9282
39/102 [==========>...................] - ETA: 0s - loss: 0.1890 - accuracy: 0.9291
57/102 [===============>..............] - ETA: 0s - loss: 0.1883 - accuracy: 0.9292
77/102 [=====================>........] - ETA: 0s - loss: 0.1880 - accuracy: 0.9291
96/102 [===========================>..] - ETA: 0s - loss: 0.1875 - accuracy: 0.9292
102/102 [==============================] - 0s 3ms/step - loss: 0.1873 - accuracy: 0.9293
## Epoch 89/100
##
1/102 [..............................] - ETA: 0s - loss: 0.2129 - accuracy: 0.9121
19/102 [====>.........................] - ETA: 0s - loss: 0.1903 - accuracy: 0.9262
38/102 [==========>...................] - ETA: 0s - loss: 0.1878 - accuracy: 0.9279
59/102 [================>.............] - ETA: 0s - loss: 0.1863 - accuracy: 0.9285
78/102 [=====================>........] - ETA: 0s - loss: 0.1855 - accuracy: 0.9290
97/102 [===========================>..] - ETA: 0s - loss: 0.1850 - accuracy: 0.9292
102/102 [==============================] - 0s 3ms/step - loss: 0.1849 - accuracy: 0.9293
## Epoch 90/100
##
1/102 [..............................] - ETA: 0s - loss: 0.1639 - accuracy: 0.9375
20/102 [====>.........................] - ETA: 0s - loss: 0.1830 - accuracy: 0.9309
40/102 [==========>...................] - ETA: 0s - loss: 0.1865 - accuracy: 0.9291
59/102 [================>.............] - ETA: 0s - loss: 0.1889 - accuracy: 0.9277
78/102 [=====================>........] - ETA: 0s - loss: 0.1894 - accuracy: 0.9274
98/102 [===========================>..] - ETA: 0s - loss: 0.1894 - accuracy: 0.9274
102/102 [==============================] - 0s 3ms/step - loss: 0.1893 - accuracy: 0.9274
## Epoch 91/100
##
1/102 [..............................] - ETA: 0s - loss: 0.1842 - accuracy: 0.9287
21/102 [=====>........................] - ETA: 0s - loss: 0.1773 - accuracy: 0.9327
39/102 [==========>...................] - ETA: 0s - loss: 0.1787 - accuracy: 0.9324
59/102 [================>.............] - ETA: 0s - loss: 0.1817 - accuracy: 0.9313
79/102 [======================>.......] - ETA: 0s - loss: 0.1850 - accuracy: 0.9298
97/102 [===========================>..] - ETA: 0s - loss: 0.1864 - accuracy: 0.9292
102/102 [==============================] - 0s 3ms/step - loss: 0.1867 - accuracy: 0.9290
## Epoch 92/100
##
1/102 [..............................] - ETA: 0s - loss: 0.2083 - accuracy: 0.9092
19/102 [====>.........................] - ETA: 0s - loss: 0.2036 - accuracy: 0.9191
37/102 [=========>....................] - ETA: 0s - loss: 0.1978 - accuracy: 0.9227
57/102 [===============>..............] - ETA: 0s - loss: 0.1941 - accuracy: 0.9247
76/102 [=====================>........] - ETA: 0s - loss: 0.1921 - accuracy: 0.9257
95/102 [==========================>...] - ETA: 0s - loss: 0.1908 - accuracy: 0.9264
102/102 [==============================] - 0s 3ms/step - loss: 0.1904 - accuracy: 0.9266
## Epoch 93/100
##
1/102 [..............................] - ETA: 0s - loss: 0.1684 - accuracy: 0.9297
20/102 [====>.........................] - ETA: 0s - loss: 0.1814 - accuracy: 0.9281
40/102 [==========>...................] - ETA: 0s - loss: 0.1802 - accuracy: 0.9294
59/102 [================>.............] - ETA: 0s - loss: 0.1794 - accuracy: 0.9300
77/102 [=====================>........] - ETA: 0s - loss: 0.1789 - accuracy: 0.9304
97/102 [===========================>..] - ETA: 0s - loss: 0.1785 - accuracy: 0.9307
102/102 [==============================] - 0s 3ms/step - loss: 0.1784 - accuracy: 0.9307
## Epoch 94/100
##
1/102 [..............................] - ETA: 0s - loss: 0.1755 - accuracy: 0.9326
20/102 [====>.........................] - ETA: 0s - loss: 0.1869 - accuracy: 0.9286
38/102 [==========>...................] - ETA: 0s - loss: 0.1829 - accuracy: 0.9303
57/102 [===============>..............] - ETA: 0s - loss: 0.1817 - accuracy: 0.9306
77/102 [=====================>........] - ETA: 0s - loss: 0.1808 - accuracy: 0.9307
94/102 [==========================>...] - ETA: 0s - loss: 0.1800 - accuracy: 0.9310
102/102 [==============================] - 0s 3ms/step - loss: 0.1796 - accuracy: 0.9312
## Epoch 95/100
##
1/102 [..............................] - ETA: 0s - loss: 0.2223 - accuracy: 0.9111
19/102 [====>.........................] - ETA: 0s - loss: 0.2039 - accuracy: 0.9205
37/102 [=========>....................] - ETA: 0s - loss: 0.1943 - accuracy: 0.9250
58/102 [================>.............] - ETA: 0s - loss: 0.1891 - accuracy: 0.9271
77/102 [=====================>........] - ETA: 0s - loss: 0.1871 - accuracy: 0.9278
95/102 [==========================>...] - ETA: 0s - loss: 0.1868 - accuracy: 0.9279
102/102 [==============================] - 0s 3ms/step - loss: 0.1870 - accuracy: 0.9278
## Epoch 96/100
##
1/102 [..............................] - ETA: 0s - loss: 0.2093 - accuracy: 0.9150
18/102 [====>.........................] - ETA: 0s - loss: 0.1909 - accuracy: 0.9271
37/102 [=========>....................] - ETA: 0s - loss: 0.1858 - accuracy: 0.9294
56/102 [===============>..............] - ETA: 0s - loss: 0.1835 - accuracy: 0.9300
75/102 [=====================>........] - ETA: 0s - loss: 0.1815 - accuracy: 0.9307
95/102 [==========================>...] - ETA: 0s - loss: 0.1808 - accuracy: 0.9309
102/102 [==============================] - 0s 3ms/step - loss: 0.1811 - accuracy: 0.9307
## Epoch 97/100
##
1/102 [..............................] - ETA: 0s - loss: 0.1860 - accuracy: 0.9180
22/102 [=====>........................] - ETA: 0s - loss: 0.2220 - accuracy: 0.9096
41/102 [===========>..................] - ETA: 0s - loss: 0.2200 - accuracy: 0.9115
59/102 [================>.............] - ETA: 0s - loss: 0.2155 - accuracy: 0.9140
79/102 [======================>.......] - ETA: 0s - loss: 0.2113 - accuracy: 0.9161
99/102 [============================>.] - ETA: 0s - loss: 0.2081 - accuracy: 0.9176
102/102 [==============================] - 0s 3ms/step - loss: 0.2076 - accuracy: 0.9179
## Epoch 98/100
##
1/102 [..............................] - ETA: 0s - loss: 0.2225 - accuracy: 0.9072
20/102 [====>.........................] - ETA: 0s - loss: 0.1932 - accuracy: 0.9230
38/102 [==========>...................] - ETA: 0s - loss: 0.1848 - accuracy: 0.9283
58/102 [================>.............] - ETA: 0s - loss: 0.1812 - accuracy: 0.9306
77/102 [=====================>........] - ETA: 0s - loss: 0.1795 - accuracy: 0.9314
95/102 [==========================>...] - ETA: 0s - loss: 0.1789 - accuracy: 0.9317
102/102 [==============================] - 0s 3ms/step - loss: 0.1787 - accuracy: 0.9318
## Epoch 99/100
##
1/102 [..............................] - ETA: 0s - loss: 0.1515 - accuracy: 0.9395
19/102 [====>.........................] - ETA: 0s - loss: 0.1795 - accuracy: 0.9313
38/102 [==========>...................] - ETA: 0s - loss: 0.1789 - accuracy: 0.9313
56/102 [===============>..............] - ETA: 0s - loss: 0.1791 - accuracy: 0.9310
74/102 [====================>.........] - ETA: 0s - loss: 0.1787 - accuracy: 0.9310
93/102 [==========================>...] - ETA: 0s - loss: 0.1780 - accuracy: 0.9313
102/102 [==============================] - 0s 3ms/step - loss: 0.1777 - accuracy: 0.9314
## Epoch 100/100
##
1/102 [..............................] - ETA: 0s - loss: 0.2107 - accuracy: 0.9092
19/102 [====>.........................] - ETA: 0s - loss: 0.1890 - accuracy: 0.9245
39/102 [==========>...................] - ETA: 0s - loss: 0.1832 - accuracy: 0.9275
56/102 [===============>..............] - ETA: 0s - loss: 0.1810 - accuracy: 0.9288
73/102 [====================>.........] - ETA: 0s - loss: 0.1801 - accuracy: 0.9294
93/102 [==========================>...] - ETA: 0s - loss: 0.1794 - accuracy: 0.9299
102/102 [==============================] - 0s 3ms/step - loss: 0.1791 - accuracy: 0.9301
## <keras.callbacks.History object at 0x7f9d92c380b8>
model.evaluate(X_test, Y_test)
##
1/810 [..............................] - ETA: 6:46 - loss: 0.5813 - accuracy: 0.7812
54/810 [=>............................] - ETA: 0s - loss: 0.1944 - accuracy: 0.9225
106/810 [==>...........................] - ETA: 0s - loss: 0.1993 - accuracy: 0.9231
157/810 [====>.........................] - ETA: 0s - loss: 0.2002 - accuracy: 0.9222
202/810 [======>.......................] - ETA: 0s - loss: 0.1974 - accuracy: 0.9233
251/810 [========>.....................] - ETA: 0s - loss: 0.1970 - accuracy: 0.9238
302/810 [==========>...................] - ETA: 0s - loss: 0.2013 - accuracy: 0.9216
346/810 [===========>..................] - ETA: 0s - loss: 0.1988 - accuracy: 0.9232
399/810 [=============>................] - ETA: 0s - loss: 0.1999 - accuracy: 0.9233
447/810 [===============>..............] - ETA: 0s - loss: 0.1991 - accuracy: 0.9237
502/810 [=================>............] - ETA: 0s - loss: 0.2010 - accuracy: 0.9231
552/810 [===================>..........] - ETA: 0s - loss: 0.2031 - accuracy: 0.9216
603/810 [=====================>........] - ETA: 0s - loss: 0.2031 - accuracy: 0.9216
650/810 [=======================>......] - ETA: 0s - loss: 0.2013 - accuracy: 0.9225
701/810 [========================>.....] - ETA: 0s - loss: 0.2017 - accuracy: 0.9224
756/810 [===========================>..] - ETA: 0s - loss: 0.2008 - accuracy: 0.9231
799/810 [============================>.] - ETA: 0s - loss: 0.2012 - accuracy: 0.9226
810/810 [==============================] - 1s 1ms/step - loss: 0.2009 - accuracy: 0.9226
## [0.20093511044979095, 0.9226431846618652]